Mik*_*ebb 39 c# variables public
我有一个.Net C#类,我需要将变量设为public.我需要在方法中初始化此变量(不在构造函数中).但是,我不希望变量可由其他类修改.这可能吗?
And*_*are 76
不要使用字段 - 使用属性:
class Foo
{
public string Bar { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
在这个例子Foo.Bar中,每个地方都可以读取,只能由Foo自己的成员写入.
作为旁注,此示例使用版本3中引入的C#功能,称为自动实现的属性.这是语法糖,编译器将转换为具有私有支持字段的常规属性,如下所示:
class Foo
{
[CompilerGenerated]
private string <Bar>k__BackingField;
public string Bar
{
[CompilerGenerated]
get
{
return this.<Bar>k__BackingField;
}
[CompilerGenerated]
private set
{
this.<Bar>k__BackingField = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
3Da*_*ave 11
public class Foo
{
public string Bar { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
你必须使用一个属性.如果您对自动getter/setter实现没问题,这将有效:
public string SomeProperty { get; private set; }
Run Code Online (Sandbox Code Playgroud)
请注意,除非在某些有限的情况下,否则不应将字段公开为公共字段.请改用属性.
当然。将其设为属性,并将 setter 设为私有:
public Int32 SomeVariable { get; private set; }
Run Code Online (Sandbox Code Playgroud)
然后设置它(从类中的某个方法中):
SomeVariable = 5;
Run Code Online (Sandbox Code Playgroud)