C#中的构造函数通常会对已经存在的符号重复很多分配。
举个例子:
class P{
int x;
int y;
int z;
P(int x,int y,int z,...)
{
this.x=x;
this.y=y;
this.z=z;
/...
}
}
有没有办法默认将构造函数输入分配给同名字段。 为每个班级重新实现这个一对一的地图是没有意义的。
答案 0 :(得分:0)
目前无法实现。
但是C#backlog中有一个名为Records的功能。虽然我不确定我们是否会在C#7中看到它。记录类型允许一行定义具有一组属性的类,这些属性将自动分配给构造函数参数。 E.g。
public class Point(int X, int Y);
与
相同public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
// plus Equals, GetHashCode, With
}
答案 1 :(得分:0)
不是你想的方式(如果我理解你的话)。构造函数的参数名称和字段/属性的名称实际上只是人类的方便标签。一个类应该是独立的并封装它的状态。即使允许编译器选项使外部(传入)名称等同于内部的名称也会混淆该概念。
你可以这样做:
public class foo {
public int X { get; set; }
public string Y { get { return X.ToString(); } }
public double Z { get; private set; }
private foo(int x) { X = x; }
public foo(int x, string y, double z = 1.0): this(x) {
Z = z;
}
}
公共构造函数使用私有构造函数(或其他公共构造函数)来完成一些工作(如最后一个foo构造函数那样)。并且您使用可选参数(因为在最后一个foo构造函数中显示了z)。