是否可以在c#中隐藏用户的无参数构造函数
我想强制他们总是使用带参数的构造函数
例如这个职业课程
public struct Position { private readonly int _xposn; private readonly int _yposn; public int Xposn { get { return _xposn; } } public int Yposn { get { return _yposn; } } public Position(int xposn, int yposn) { _xposn = xposn; _yposn = yposn; } }
我只希望用户能够通过指定x和y坐标来新建位置
但是,无参数构造函数始终可用
我不能把它私有化.甚至将其定义为公开
我已经读过这个 为什么我不能在.NET中为结构定义默认构造函数?
但它并没有真正的帮助
如果这是不可能的 - 检测我被传递的位置是否具有值的最佳方法是什么?
明确检查每个属性字段?有一种更光滑的方式吗?
谢谢
不,你不能这样做.如你所说,之前已经提出了类似的问题 - 我认为答案很明确,你不能这样做.
您可以 为结构创建私有无参数构造函数,但不能在C#中创建.但是,即使你这样做也没有用 - 因为你可以轻松地解决它:
MyStruct[] tmp = new MyStruct[1]; MyStruct gotcha = tmp[0];
这将是MyStruct的默认值 - "全零"值 - 无需调用构造函数.
您可以轻松地向结构中添加Validate方法,并在每次收到一个参数时调用它,不可否认.
不,不能隐藏它。结构无法重新定义零arg构造函数,因此无法重新定义其可见性。