ste*_*yer 37
Microsoft的此页面描述了如何仅从构造函数设置属性.
您可以通过两种方式创建不可变属性.您可以将set accessor声明为private.该属性只能在类型中设置,但对消费者来说是不可变的.您可以改为仅声明get访问器,这使得该属性在所有位置都是不可变的,除了在类型的构造函数中.
在Visual Studio 2015附带的C#6.0中,有一个更改允许从构造函数设置get only属性.而且只能来自构造函数.
因此,代码可以简化为仅获取属性:
public class Thing
{
public Thing(string value)
{
Value = value;
}
public string Value { get; }
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*ton 14
使属性具有只读后备字段:
public class Thing
{
private readonly string _value;
public Thing(string value)
{
_value = value;
}
public string Value { get { return _value; } }
}
Run Code Online (Sandbox Code Playgroud)
Dha*_*777 14
在 C# 9 中,它引入了“init”关键字,它是“set”的变体,这是实现此目的的最佳方法。
\n\n\n\n\n今天的一个很大的限制是属性必须是可变的\n 对象初始值设定项才能工作:它们通过首先调用\n object\xe2\x80\x99s 构造函数(在本例中是默认的无参数构造函数)和\n然后分配给属性设置者。
\n\n仅初始化属性可以解决这个问题!他们引入了一个 init 访问器,它是 set 访问器的变体,只能在对象初始化期间调用:
\n
public class Person\n{\n public string FirstName { get; init; }\n public string LastName { get; init; }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n参考: https: //devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
\n| 归档时间: |
|
| 查看次数: |
18832 次 |
| 最近记录: |