• C#编码规范(四)


    31.  总是使用基于0开始的数组。

    32.  在循环中总是显式的初始化引用类型的数组。

    public class MyClass

    {}

    MyClass[] array = new  MyClass[100];

    for(int index = 0; index < array.Length;  index++)

    {

       array[index] = new  MyClass();

    }

    33.  不要提供public 和 protected的成员变量,使用属性代替他们。

    34.  避免在继承中使用new而使用override替换。

    35.  在不是sealed的类中总是将public 和 protected的方法标记成virtual的。

    36.  除非使用interop(COM+ 或其他的dll)代码否则不要使用不安全的代码(unsafe code)。

    37.  避免显示的转换,使用as操作符进行兼容类型的转换。

    Dog dog = new GermanShepherd();

    GermanShepherd shepherd = dog  as  GermanShepherd;

    if (shepherd != null )

    {…}

    38.  当类成员包括委托的时候

    a)  Copy a delegate to a local variable before publishing to avoid concurrency race

    condition. 

    b)  在调用委托之前一定要检查它是否为null

    public class MySource

    {

       public event EventHandler  MyEvent;

       public void FireEvent()

       {

          EventHandler temp = MyEvent;

          if(temp != null )

          {

             temp(this,EventArgs.Empty);

          }

       }

    }  

    39.  不要提供公共的事件成员变量,使用事件访问器替换这些变量。

    public class MySource

    {

       MyDelegate m_SomeEvent ;

       public event MyDelegate SomeEvent

       {

          add

          {

             m_SomeEvent += value;

          }

          remove

          {

             m_SomeEvent -= value;

          }

       }

    }

    40.  使用一个事件帮助类来公布事件的定义。

  • 相关阅读:
    numpy 支持切片取值,使用ix_ 也可以取到
    pyinstaller 打包文件成 exe
    matplotlib 直方图概率不为1
    小提琴图 ValueError: object arrays are not supported
    pip 生成 requirements.txt
    CF1515E(连续段 dp)
    Lg7 月赛(构造,树形 dp)
    [省选联考 2020 A 卷] 组合数问题 题解报告
    愤怒的小 N 题解报告
    CF32E 题解
  • 原文地址:https://www.cnblogs.com/atun/p/2053395.html
Copyright © 2020-2023  润新知