C# getters setters 样式

标签 c# properties private setter getter

我正在编写一些代码,其中有很多这样的代码:

private int x;

public void SetX(int new_x)
{
   this.SetXValue(new_x); 
}

private void SetXValue(int new_x)
{
   this.x = new_x; 
}

与属性类似:

private int x;

public int X 
{
    get { return this.GetX(); }
}

private int GetX()
{
    return this.x; 
}

我不明白的是为什么需要私有(private)方法来完成实际工作,即为什么不使用这样的方法:

public void SetX(int new_x) 
{
  this.x = new_x;
}

public int X
{
    get { return this.x; }
}

这只是其他人的个人选择还是有充分的理由使用第一种方式?

(我手动输入了上面的代码,如果有任何错误,我深表歉意,但希望您能看到我想说的)

干杯 一个

最佳答案

据我所知,没有理由使用这样的代码。如果您没有对新值执行任何操作(例如存储前的处理/检查)并且您正在编写 C# 3.0,您实际上可以将其简写为:

public int MyProperty { get; set; }

编译器会为您创建后备存储,您可以直接引用:

this.MyProperty

...在你的类(class)里。您还可以创建 get-only 属性,例如:

public int MyProperty { get; private set; }

我认为所有这些都非常简洁!

关于C# getters setters 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9735670/

相关文章:

iphone - 省略属性的 ivars 声明是否会导致麻烦或泄漏?

C++ 等效于 Python 属性

java - 如果我们可以使用访问器访问私有(private)数据成员,那么为什么我们不能访问私有(private)方法呢?

android - 在 Android 中使用私有(private)类

java - 面向对象编程私有(private)类字段+获取/设置或公共(public)类字段?

c# - 创建/更新/删除分层数据的正确方法

c# - .Net/C# 中远程启动和关闭 Azure 服务器

c# - 在没有两个或多个连续 6 的情况下查找下一个数字的算法

c# - Visual Studio 设计时属性 - 表单列表下拉列表

c# - C# 中的 Observable 和 Observer(java.util 包)等效项