30 c# coding-style
我看到了两种编写私有成员变量标准的常用方法:
class Foo
{
private int _i;
private string _id;
}
Run Code Online (Sandbox Code Playgroud)
和
class Foo
{
private int m_i;
private string m_id;
}
Run Code Online (Sandbox Code Playgroud)
我相信后者来自C++.此外,许多人在成员变量(例如double m_dVal)之前指定类型以指示它是double类型的非常量成员变量?
C#中有哪些约定?
dri*_*iis 61
除了你提到的两个,在C#中很常见的是没有私有成员的前缀.
class Foo
{
private int i;
private string id;
}
Run Code Online (Sandbox Code Playgroud)
这就是我使用的内容,也是Microsoft内部命名准则中的建议.
Meh*_*ari 14
不要使用成员变量的前缀(
_,m_,s_等).如果要区分本地变量和成员变量,则应this.在C#中使用" ",Me.在VB.NET中使用" " .
Bra*_*ery 14
我认为这里的重要原则是你是一致的.如果您喜欢这样做,请使用"_"或"m"前缀,这与您正在使用的其余代码一致.无论你选择什么,坚持下去并保持一致.
Dan*_*fer 10
我更喜欢使用您的第一个示例,或者像这样的自动属性,这样可以避免在您的类中定义私有字段:
public String MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)
使用prop片段使这些真正快速.
微软的一般指导:
http://msdn.microsoft.com/en-us/library/ms229002.aspx
C#中的自动属性非常好,我可以随时使用,但有些情况下它们对我不起作用,例如在set方法上进行类型或值检查时.
一般情况下:使用驼峰套管,不要在名称前加上下划线或类型前缀等名称.
public int Age {get; set;}
Run Code Online (Sandbox Code Playgroud)
要么
private int age;
public int Age
{
get { return age; }
set
{
if(value < 0)
throw new InvalidOperationException("Age > 0");
age = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢用下划线作为私有非 const 非只读字段的前缀。为什么?原因: 1. 只需查看变量,我就可以区分字段变量和本地/参数变量。使用“这个”。不适用于所有字段 - 它更长。2.参数和字段之间存在歧义:
class Foo
{
private int id;
public Foo(int id)
{
id = id; //Will compile and work fine. But field will not be initialized.
}
}
Run Code Online (Sandbox Code Playgroud)
我个人总是使用你的第一个例子:
public class Foo
{
private int _i;
private string _id;
}
Run Code Online (Sandbox Code Playgroud)
事实上,这就是我整个团队所使用的.此外,您提到的那个m_dVal被称为匈牙利表示法,这里是维基百科条目.匈牙利表示法实际上违反了我们团队的编码标准,所以我从不使用它.
| 归档时间: |
|
| 查看次数: |
78093 次 |
| 最近记录: |