4

在构造函数中将变量传递给属性时,是否有一种“正确”的方式来命名变量?示例(在 C# 中):

public class MyClass
{
    private int index;

    public MyClass(int i)
    {
        index = i;
    }
}

当两个变量“相同”时,是否可以更简洁地命名一个,等等?我想至少保持一致,但我想知道是否有一种可接受的方式来做到这一点。

4

7 回答 7

5
public MyClass(int index)
{
    this.index = index;
}

这至少是 Java 中常见的做法,我想在 C# 中也是如此。它使名称比 更有意义i,并使用与属性相同的名称来指定相同的事物。

于 2013-06-02T14:58:27.613 回答
1

重构建议类的私有字段为驼峰式,并在它们前面加上 _ (_index在您的情况下)。他们建议将参数设置为不带下划线的 camelCase。

如评论中所述,私有字段没有 MSDN 推荐的标准。

于 2013-06-02T15:30:40.497 回答
0

你可以使用你写的

或者

如果变量名称相同,下面可以是另一个选项

public class MyClass
{
    private int index;

    public MyClass(int index)
    {
        this.index = index;
    }
}
于 2013-06-02T14:58:39.193 回答
0

您可以将它们命名为相同的名称。用它来澄清你在做什么。

this.index = index;

如果您进行区分(我不建议这样做),最好最明确地传递给方法的参数名称而不是您的内部名称。如果其他程序员使用您的类,那么至少他们知道参数的含义。因此,如果您想区分:

public MyClass(int index)
{
  i = index;
}
于 2013-06-02T15:00:14.463 回答
0

我认为您应该专注于使“可见”变量更具可读性(在这种情况下,这是构造函数的参数)。毕竟,这是您班级的用户在输入时会看到的内容。

是的,有一个避免这种困境的正确方法,即遵循为您的语言建立的命名约定。例如,在 C# 中,私有字段以下划线开头是一种约定。可能有一些相当于Java的东西。

话虽如此,通过显式使用引用字段来区分字段和局部变量是绝对可能的this(当存在命名歧义时这种做法是合适的)。

于 2013-06-02T15:05:26.623 回答
0

MSDN 中定义了 .NET 中的一组编码标准。

http://msdn.microsoft.com/en-us/library/ms229002.aspx

但对于指南的全部列表:

http://msdn.microsoft.com/en-us/library/ms229042.aspx

于 2013-06-02T15:26:38.417 回答
0

C# 标准会这样编写您的代码:

public class MyClass {
  public MyClass(int index) {
    Index = index;
  }
  public int Index {
    get { return _index; }
    private set { _idex = value; /* Perform other actions triggered by the set */ }
  }
  private int _index;
}

在不需要支持字段的情况下,属性(和支持字段)可以并且应该简化为:

public Index { get; private set; }
于 2013-06-02T16:04:52.590 回答