C# 编码约定

命名约定

如果对于单行来说过长,则可以在点 (.) 后中断限定名称,如下面的示例所示。

布局约定

  1. 智能缩进、4 字符缩进、制表符保存为空格.
  2. 每行只写一条语句。 每行只写一个声明。
  3. 如果连续行未自动缩进,请将它们缩进一个制表符位(四个空格)。
  4. 在方法定义与属性定义之间添加至少一个空白行。
  5. 使用括号突出表达式中的子句,如下面的代码所示
if ((val1 > val2) && (val1 > val3))
{
   // Take appropriate action.
}

语言准则

String 数据类型

  • 使用字符串内插来连接短字符串,如下面的代码所示。
string displayName = $"{nameList[n].LastName}, {nameList[n].FirstName}";
  • 若要在循环中追加字符串,尤其是在使用大量文本时,请使用 StringBuilder 对象。
var phrase = "lalalalalalalalalalalalalalalalalalalalalalalalalalalalalala";
var manyPhrases = new StringBuilder();
for (var i = 0; i < 10000; i++)
{
    manyPhrases.Append(phrase);
}
//Console.WriteLine("tra" + manyPhrases);

隐式类型的局部变量

  • 当变量类型明显来自赋值的右侧时,或者当精度类型不重要时,请对本地变量进行隐式类型化。
// When the type of a variable is clear from the context, use var 
// in the declaration.
var var1 = "This is clearly a string.";
var var2 = 27;
var var3 = Convert.ToInt32(Console.ReadLine());
  • 当类型并非明显来自赋值的右侧时,请勿使用 var。
    int var4 = ExampleClass.ResultSoFar();
  • 使用隐式类型化(var)来确定 for 和 foreach 循环中循环变量的类型。

无符号数据类型

  • 通常,使用 int 而非无符号类型。 int 的使用在整个 C# 中都很常见,并且当你使用 int 时,更易于与其他库交互。

数组

  • 当在声明行上初始化数组时,请使用简洁的语法。
// Preferred syntax. Note that you cannot use var here instead of string[].
string[] vowels1 = { "a", "e", "i", "o", "u" };

// If you use explicit instantiation, you can use var.
var vowels2 = new string[] { "a", "e", "i", "o", "u" };

// If you specify an array size, you must initialize the elements one at a time.
var vowels3 = new string[5];
vowels3[0] = "a";
vowels3[1] = "e";
// And so on.

委托

  • 创建及使用委托类型的步骤。
//1,定义委托 in class Program, define the delegate type and a method that  
// has a matching signature.
// Define the type.
public delegate void Del(string message);

// 2,定义方法Define a method that has a matching signature.
public static void DelMethod(string str)
{
    Console.WriteLine($"DelMethod argument: {str}");
}

// 3,将方法添加到委托,一个委托可以添加多个方法(+=)。
//In the Main method, create an instance of Del.
// Preferred: Create an instance of Del by using condensed syntax(简介语法).
Del exampleDel2 = DelMethod;
// The following declaration uses the full syntax(常规语法).
Del exampleDel1 = new Del(DelMethod);

New 运算符

  • 隐式类型化时,请使用对象实例化的简洁形式,如下面的声明所示。
//隐式类型化
var instance1 = new ExampleClass();
//常规模式
ExampleClass instance2 = new ExampleClass();
  • 使用对象初始值设定项来简化对象创建。
// Object initializer.
var instance3 = new ExampleClass { Name = "Desktop", ID = 37414, 
    Location = "Redmond", Age = 2.3 };

// Default constructor and assignment statements.
var instance4 = new ExampleClass();
instance4.Name = "Desktop";
instance4.ID = 37414;
instance4.Location = "Redmond";
instance4.Age = 2.3;

事件处理

  • 如果你正定义一个稍后不需要删除的事件处理程序,请使用 lambda 表达式。
//lambda方式
public Form2()
{
    // You can use a lambda expression to define an event handler.
    this.Click += (s, e) =>
        {
            MessageBox.Show(
             ((MouseEventArgs)e).Location.ToString());
        };
}
//传统方式
// Using a lambda expression shortens the following traditional definition.
public Form1()
{
    this.Click += new EventHandler(Form1_Click);
}

void Form1_Click(object sender, EventArgs e)
{
    MessageBox.Show(((MouseEventArgs)e).Location.ToString());
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值