有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我认为当你想对一些变量/对象进行分组(有点像Cstruct)时,这是有意义的。例如:

    class Pixel {
      public int x;
      public int y;
      Color c;
      // Other Pixel related information
    }
    

    由于没有方法,如果使用了错误的值,就不会有任何中断,并且它很好地将这些变量组合在一起