在构造函数中将变量传递给属性时,是否有一种“正确”的方法来命名变量?示例(在c#中):
public class MyClass
{
private int index;
public MyClass(int i)
{
index = i;
}
}
当两个变量是“相同”时,通常更简洁地命名,等等?我想至少保持一致,但我是否有一种可接受的方式来做到这一点。
答案 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)
答案 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; }