我正在设置类的属性
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
但我也可以这样设置属性
public string Name { get; private set; }
Run Code Online (Sandbox Code Playgroud)
我想知道这些之间的区别吗?他们有什么范围?
这意味着您无法从类实例中设置此属性.只有同一类的成员才能设置它.因此,对于外人此属性成为read-only属性.
class Foo
{
public string Name1 { get; set; }
public string Name2 { get; private set; }
public string Name3 { get { return Name2; } set { Name2 = value; }
}
Run Code Online (Sandbox Code Playgroud)
然后
Foo f = new Foo();
f.Name1 = ""; // No Error
f.Name2 = ""; // Error.
f.Name3 = ""; // No Error
Run Code Online (Sandbox Code Playgroud)
Name3将设置值,Name2但Name2不能直接设置值.
他们有什么范围?
由于Name1和Name3财产是公共的,因此他们及其获取和设置方法随处可用.
Name3也是公共的,但它的设置是私有的,所以属性和get方法将随处可用.Set方法范围仅限于类(private访问修饰符在定义它的实体内具有范围).
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |