如何解决有没有一种方法可以指定类的默认属性?
我想知道是否有一种方法可以在C#中指定类的默认属性。
例如,如果我有以下课程:
class NewType
{
public object Value
{
get => _value;
set
{
IsInitialized = true;
_value = value;
}
}
public bool IsInitialized { get; private set; }
// ... etc properties
}
我想按如下方式使用上述类:
void Test()
{
NewType Value = new NewType();
// The follow assignment expression means 'Value.Value = 10;'
Value = 10;
}
我不知道上面的想法是否很好,但我认为它可以提高我的案例的可读性。
有没有办法实现这个目标?
解决方法
在回答有关“默认属性”的问题时,答案是否定的。最好的办法是指定要为其分配值的属性:
get()
下一个最好的事情是创建一个设置值的构造函数:
var newType = new NewType {Value = 10};
现在输入的内容略少:
class NewType
{
private int _value;
public int Value
{
get { return _value; }
set
{
IsInitialized = true;
_value = value;
}
}
public bool IsInitialized { get; private set; }
public NewType(int value)
{
Value = value;
}
// ... etc properties
}
如果您希望能够基于整数初始化类而无需调用构造函数,则可以为var newType = new NewType(10);
实现一个隐式运算符,并根据分配的值创建类的新实例:>
int
现在您可以这样做:
class NewType
{
private int _value;
public int Value
{
get { return _value; }
set
{
IsInitialized = true;
_value = value;
}
}
public bool IsInitialized { get; private set; }
public static implicit operator NewType(int i) => new NewType {Value = i};
// ... etc properties
}
这里的问题是,如果您已经有一个设置了其他属性的类,然后使用隐式运算符尝试设置NewType newType = 10;
,则实际上是重新分配了整个对象,其他属性将被重新设置为其默认值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。