C Sharp/Naming

原因

大部分命名标准来自Microsoft .NET Framework库。

习惯

Namespace

Namespaces使用Pascal命名法 (也称作UpperCamelCase、大驼峰命名法)且没有下划线。例如: MyNewNamespace。3个或更多字母的缩写词也是首字母大写(MyXmlNamespace 代替 MyXMLNamespace)。

Assembly

如果一个assembly包含一个namespace,那么二者应该同名。否则,assembly应该使用Pascal命名法

类和结构

使用Pascal命名法,没有下划线,没有前缀CclsI。类和它所在的namespace不应该同名。三个或更多字母的缩写使用Pascal命名法,而不应全大写。尽量避免缩写。尽量使用名词。

异常类

名字应以Exception结尾。

Interface

前缀以I,随后字母大写。例如:IFoo

函数

使用Pascal命名法,不要用下划线,除非事件处理器。尽量避免缩写。

属性和公开的成员变量

使用Pascal命名法,不要用下划线。尽量避免缩写。

参数和方法级变量

使用Pascal命名法,不要用下划线。尽量避免缩写。

第一个词的首字母也可以小写。

类级的私有或保护变量

前缀以下划线,然后使用Pascal命名法。声明时总是给出protectedprivate关键字。

窗体上的控件

前缀以控件类型缩写,随后为使用Pascal命名法,不要用下划线。尽量避免缩写。

ASP.Net web form control例子:

控件前缀例子
LabellbllblSurname
TextBox(ASP.Net)tbtbSurname
TextBox(WinForms) txt txtUserName
DataGriddgdgResults
GridViewgvgvResults2
ButtonbtnbtnSave
ImageButtoniBtniBtnSave
HyperlinklnklnkHomePage
ComboBox cmb cmbYear
DropDownListddlddlCompany
ListBoxlstlstCompany
DataListdLstdLstAddress
DataSetdsdsInvoices
DataTabledtdtClients
DataRowdrdrUser
RepeaterreprepSection
CheckboxchkchkMailList
CheckBoxListchkchkAddress
RadioButtonrBtnrBtnGender
RadioButtonListrBtnrBtnAgeGroup
ImageimgimgLogo
PanelpnlpnlSevtion
PlaceHolderplhplhHeader
CalendarcalcalMyDate
AdRotatoradradrBanner
TabletbltblResults
[All] Validatorsval (N/A)valCreditCardNumber
ValidationSummaryvals (N/A)valsErrors

常量

使用Pascal命名法,不要用下划线。尽量避免缩写。见.NET Framework Design Guidelines讨论。

例子

using System;

namespace MyExampleNamespace
{
    public class Customer : IDisposable
    {
        private string _customerName;
        public string CustomerName 
        { 
            get 
            { 
                return _customerName; 
            }
            set
            {
                _customerName = value;
                _lastUpdated = DateTime.Now;
            }
        }

        private DateTime _lastUpdated;

        public DateTime LastUpdated
        {
            get
            {
                return _lastUpdated;
            }
            private set
            {
                _lastUpdated = value;
            }
        }

        public void UpdateCustomer(string newName)
        {
            if (!newName.Equals(CustomerName))
            {
                CustomerName = newName;
            }
        }

        public void Dispose()
        {
            //Do nothing
        }
    }
}
Category:C Sharp#Naming%20
Category:C Sharp Category:使用已弃用enclose属性的页面 Category:使用已弃用source标签的页面