根据这些评论编辑:
你的意思是"财产"与"战场"吗?public String S1; vs public String S2 {get; 组; } - 达娜
完全是达娜,我的意思是一样的.- 阿萨德
阿萨德:你真的需要尝试用其他术语来描述你的意思,这样我们才能更好地理解你的问题.C#没有全局变量.您可以在C#中定义的字段不是全局的 - 它们是类类型的成员.- dthorpe
嗨fellas,
需要您对Fieldand 之间差异的专家意见Property.在我的项目中,我使用了某些全局变量,后来我改为"属性".我的经理问的是使用Properties变量代替的好处是什么Fields.
虽然我回复了他Property提供了一种安全/安全/间接访问,Field而不是直接修改它们,如果它们被声明public或protected.但请给我一些更有说服力的论据.
感谢致敬
@Asad:你应该把你的术语说得对:Fields不是Global Variables,C#没有全局变量(正如一些评论者提到的:你可以模拟全局变量,但你不应该这样做).
两者之间有什么根本区别
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
Run Code Online (Sandbox Code Playgroud)
和
public string Name {get; set;}
Run Code Online (Sandbox Code Playgroud) 考虑以下两个选项:
public int Foo { get; set; }
public int Foo;
Run Code Online (Sandbox Code Playgroud)
它们似乎在语义上是等价的,我相信它们甚至会编译成同一个IL.那么使用该物业有什么好处?看到一个公共领域让我感到不安,但我想不出使用属性语法的任何具体优势.如果将来需要显式的getter和setter,public int Foo;则可以替换为public int Foo { ... }不需要其他更改.我能想到的最好的是属性语法感觉更好,但我很难用这个理由来说服其他人.
在这种情况下使用属性语法的优点(如果有的话)是什么?