10

我不确定,因为在 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; }
    }

b.)

    private string _name;
    private int _time;

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

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

C。)

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

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

4

7 回答 7

26

d 怎么样,遵循 .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 */ }
}

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

至于会员的排序——那更是你自己的选择。假设您正在与团队合作,请与团队交谈并了解当地的惯例。

于 2012-07-06T13:42:28.467 回答
11

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

public string Name { get; set; }
public int Time { get; set; }
于 2012-07-06T13:42:21.620 回答
6

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

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

短优点:它简短易行

短缺点:不能geter/setter 中放一些东西,不能在 Visual Studio 中放断点...

希望这可以帮助。

于 2012-07-06T13:42:57.520 回答
3

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

于 2012-07-06T13:43:44.897 回答
3

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

 public string Name {get; set;}
 public int Time {get; set;}
于 2012-07-06T13:42:20.870 回答
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;}

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

于 2012-07-06T14:25:26.983 回答
1
public string Name {get; set;}
public int Time {get; set;}
于 2012-07-06T13:42:31.260 回答