Use*_*er1 6 c# naming-conventions
微软表示,字段和属性必须不仅仅是大小写.那么,如果他们真正代表同一个想法,他们应该如何区别?
这是微软不做的例子:
using System;
namespace NamingLibrary
{
public class Foo // IdentifiersShouldDifferByMoreThanCase
{
protected string bar;
public string Bar
{
get { return bar; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
他们没有提供关于它应该如何看的指导.大多数开发人员做了什么?
Jon*_*eet 11
不,微软表示,公开可见的成员必须与以下案例不同:
此规则仅针对公开可见的成员触发.
(包括受保护的成员,因为它们对派生类是可见的.)
所以这很好:
public class Foo
{
private string bar;
public string Bar { get { return bar; } }
}
Run Code Online (Sandbox Code Playgroud)
我的个人规则是不允许任何其他私人领域,此时这不是问题.
你真的需要保护区吗?如果您希望能够从派生类中改变它,那么如何使该属性具有受保护的setter?
这可能会让一些开发人员感到厌恶,但我喜欢命名约定,让我可以一目了然地将成员变量与本地人区分开来.
所以,我经常这样做:
public class Foo
{
protected string _bar;
public string Bar
{
get { return _bar; }
}
}
Run Code Online (Sandbox Code Playgroud)
...要么...
public class Foo
{
protected string mBar; // 'm' for member
public string Bar
{
get { return mBar; }
}
}
Run Code Online (Sandbox Code Playgroud)