C# 小笔记

1,Using

  

using (var ws = new WebSocket ("ws://dragonsnest.far/Laputa")) {
        ws.OnMessage += (sender, e) =>
            Console.WriteLine ("Laputa says: " + e.Data);

        ws.Connect ();
        ws.Send ("BALUS");
        Console.ReadKey (true);
      }

  定义范围,范围结束时调用这个类的dispose释放资源。

  释放资源有三种方法,dispose,close和析构方法,析构方法由垃圾回收机制自动调用。

 

2,Get Set

  作用1:设置访问权限,验证条件

  作用2:提供一层封装,响应属性变化事件,改变一个值调用什么方法,例如UI中的一个事件。

3,params

  params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候。 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。

  如果函数有多个参数,params参数要放在最后,参数数组必须是一维数组,不能和ref,out一起使用,实参可以是一个数组也可以是几个变量,如果是数组就是引用传递,几个变量就是值传递。

 4,partial

  局部类型,允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。

  类特别大或者需要多人合作时使用,

5,扩展方法

  扩展方法的类必须是一个静态类,

  public static ToInt(this string s)

  {

    return xxx;

  }

  S.ToInt();

6,泛型

  类型安全,效率高,没有装箱拆箱操作或强制转换,

public class Node<T, V> where T : Stack, IComparable

        where V: Stack

    {...}  

使用where对类型T进行约束,可以继承一个类多个接口

如果需要在类中对T实例化,需要用到new

public class Node<T, V> where T : Stack, new()

        where V: IComparable

new只能是无参数的,所以对应的stack类型必须有一个无参数的构造函数。、

public class Node<T, V>

    {

        public T add(T a, V b)          //第一个add

        {

            return a;

        }

        public T add(V a, T b)          //第二个add

        {

            return b;

        }

        public int add(int a, int b)    //第三个add

        {

            return a + b;

        }

}

泛型类的重载,如果调用add(1,1),不会编译错误,如果删除第三个方法就会报错,编译器不知道该选择哪个方法。

7,string.format

 

8,readonly 和 const

  readonly可以在构造函数中赋值,而const必须要声明时初始化.readonly是运行时常量,const是编译常量。

   `readonly` 字段可以在声明或构造函数中初始化。 因此,根据所使用的构造函数,`readonly` 字段可能具有不同的值。 另外,虽然 `const` 字段是编译时常量,但 `readonly` 字段可用于运行时常量,如下面的示例所示:

  public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;

  

posted @ 2017-07-25 11:57  Litmin  阅读(184)  评论(0编辑  收藏  举报