gpt4 book ai didi

c# - 在结构上隐藏无参数构造函数

转载 作者:IT王子 更新时间:2023-10-29 04:21:44 25 4
gpt4 key购买 nike

是否可以在 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 坐标来新建一个 Position。

但是,无参数构造函数始终可用。

我无法将其设为私有(private)。或者甚至将其定义为公开。

我读过这个: Why can't I define a default constructor for a struct in .NET?

但这并没有真正的帮助。

如果这不可能 - 检测传递给我的 Position 是否有值的最佳方法是什么?

明确检查每个属性字段?有没有更好的方法?

最佳答案

不,你不能这样做。正如你所说,similar question之前有人问过 - 我认为答案很明确,你做不到。

可以 create a private parameterless constructor for a struct ,但不是在 C# 中。但是,即使您这样做也无济于事 - 因为您可以轻松解决它:

MyStruct[] tmp = new MyStruct[1];
MyStruct gotcha = tmp[0];

这将是 MyStruct 的默认值——“全零”值——无需调用构造函数。

诚然,您可以轻松地向您的结构添加一个 Validate 方法,并在每次收到一个作为参数时调用该方法。

关于c# - 在结构上隐藏无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com