在构造函数参数和属性中具有相似名称的变量的常见做法

时间:2013-06-02 14:56:22

标签: c# class variables parameters constructor

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

public class MyClass
{
    private int index;

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

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

7 个答案:

答案 0 :(得分:4)

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

这至少是在Java中常见的做法,我猜它是the same in C#。它使名称比i更有意义,并使用与属性相同的名称来指定相同的内容。

答案 1 :(得分:1)

Refactor建议将类的私有字段设置为camelCase,在它的情​​况下使用_(_index)作为前缀。他们建议没有下划线的参数为camelCase。

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

答案 2 :(得分:0)

您可以按照自己的意思使用

如果变量名称相同,

下面的

可以是另一个选项

public class MyClass
{
    private int index;

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

答案 3 :(得分:0)

您可以将它们命名为相同。用这个来说明你在做什么。

this.index = index;

如果你做了区分(我不建议这样做),最好是明确传递给方法的参数名称而不是你的内部名称。如果其他程序员使用你的类,那么至少他们知道参数意味着什么。所以,如果你想要区分:

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

答案 4 :(得分:0)

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

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

话虽如此,通过明确地使用this来引用字段(在存在命名歧义时适当的做法),可以区分字段和局部变量。

答案 5 :(得分:0)

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

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

但是对于指南的总列表:

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

答案 6 :(得分: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; }