我应该如何在C#中使用Properties?

时间:2012-07-06 13:40:21

标签: c# .net properties

我不确定因为在Java getter / setter中看起来有点不同但是用“c#方式”来编写这些东西?

选项a。)

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private int time;

    public int Time
    {
        get { return time; }
        set { time = value; }
    }

湾)

    private string _name;
    private int _time;

    public string name
    {
        get { return _name; }
        set { _name = value; }
    }

    public int time
    {
        get { return _time; }
        set { _time = value; }
    }

角)

   public string name {get; set;}
   public int time {get; set;}

好的有一些例子。什么看起来更好?我应该首先编写所有私有变量声明然后编写属性,还是应该将我的变量和属性声明组合在一起。

7 个答案:

答案 0 :(得分:26)

如何遵循.NET命名约定:

public string Name { get; set; }
public int Time { get; set; } // Odd type for time, admittedly...

除非你做一些非常重要的事情,否则不要自己手动编写属性。

如果您执行手动编写属性实现,则由您如何命名私有变量。就我个人而言:

private string name;
public string Name
{
    get { /* whatever */ }
    set { /* whatever */ }
}

...但是如果你想使用下划线,那就是你的特权。

至于会员的订购 - 这更属于您自己的选择。假设您正在与团队合作,请与团队交流并了解当地的惯例。

答案 1 :(得分:11)

如果您不需要访问底层支持字段,则建议使用自动属性(C)。但是,根据.NET命名约定,它们应该是PascalCase。

public string Name { get; set; }
public int Time { get; set; }

答案 2 :(得分:6)

前两个只是命名对象,您应根据公司/开发组或您自己的决定选择。

第三种情况是判断相同属性的简短方法,其中实际的field将由运行时本身生成。

简短优点:简短易用

简短缺点:无法在内置 geter / setter,无法在Visual Studio中放置断点 ......

希望这有帮助。

答案 3 :(得分:3)

在您的特定情况下(getter或setter上没有逻辑),最佳选项是C(对属性名称进行小的更改以遵循C#标准)

 public string Name {get; set;}
 public int Time {get; set;}

答案 4 :(得分:3)

取决于这种情况,当您定义字段时使用下划线字符,如果您只需要一个简单的getter / setter,则无需自己定义字段,因为编译器将在后台为您定义它们。

答案 5 :(得分:2)

我会选择,其他大多数已经发布。

public string Name {get; set;}
public int Time {get; set;}

请注意,您可以单独对setter和getter进行更改保护级别,例如

public string Name {get; protected set;}
protected int Time {get; private set;}

您只能使用比应用于孔属性更高的保护。

答案 6 :(得分:1)

public string Name {get; set;}
public int Time {get; set;}