c#什么时候使用公共字段才有意义?
这个问题我已经问了一段时间了:
什么时候像这样公开一个领域才有意义
public class SomeClass()
{
public int backing;
}
这样做的缺点(除了激怒OOP精英)是,如果需要在这些数据之上添加任何逻辑,就必须对API进行突破性的更改。我想这就是精英们所说的
Java和C#中的最佳实践一直是使用getter/setter或属性来访问字段
public class SomeClass()
{
private int backing;
public int getBacking()
{
return backing;
}
public void setBacking(int v)
{
backing = v;
}
}
C#已将其演变为具有自动属性的非常简单的语法:
public class SomeClass()
{
public int Backing { get; set; }
}
懒惰的我仍然觉得这太长了,因为这是我发现自己经常做的事情。更重要的是,我不知道公共领域在哪里更有意义
为什么不在幕后将公开声明的字段视为属性(或方法)?这样就不可能激怒众神,也不可能少打字
public class SomeClass()
{
public int backing; // The same as public int backing { get; set; }
}
对于一个只包装底层字段的属性,我非常确定JIT会优化方法调用,所以性能可能不是问题。有什么想法吗?(字段名的大小写约定除外)
编辑:感谢所有回复。我觉得也许不是每个人都理解我的问题。什么时候公共场地会比房产更好?为什么这是一个更好的选择?如果唯一的原因是方便(更少的键入和混乱),那么每当遇到公共字段时,让编译器“秘密”生成属性会有什么坏处呢。基本上,不可能创建真正的公共字段(因为它们都是属性)。那会有什么问题?谢谢
# 1 楼答案
我认为当你想对一些变量/对象进行分组(有点像C
struct
)时,这是有意义的。例如:由于没有方法,如果使用了错误的值,就不会有任何中断,并且它很好地将这些变量组合在一起