zoukankan      html  css  js  c++  java
  • C#基础知识

    【C#数组、泛型和集合介绍】

    1.数组声明和初始化


    第一种方法:int[] myArray;(声明) myArray = new int[4];(初始化)或者一句话:int[] myArray = new int[4];
    第二种初始化方法:使用数组初始化器:int[] myArray = new int[4] { 4, 7, 11, 2 };
    当然,如果使用花括号初始化数组,还可以不指定数组的大小,因为编译器会计算出元素的个数。int[] myArray = new int[] { 4, 7, 11, 2 };
    终极版本:使用C#编译器还有一种更简化的形式:int[] myArray = { 4, 7, 11, 2 };

    2.访问数组元素


    数组在声明和初始化后就可以用索引器访问其中的元素了。
    通过索引器传送元素符号,就可以访问数组。索引器总是以0开头,表示第一个元素。
    如果不知道数组中元素的个数,则可以在for语句中使用Length属性。

    fro( int i = 0; i< myArray.Length; i++) 
    { 
          Console.WriteLine(myArray[i]); 
    } 


    出了使用for语句进行迭代数组中的所有元素之外,还可以使用foreach语句

    foreach( int item in myArray ) 
    { 
         Console.WriteLine(item); 
    }

    注意:用索引器访问数组最好先判断数组是否越界,否则运行时会抛出System.IndexOutOfRangeException: 索引超出了数组界限

    3.数组和集合接口:


    IEumerble接口:是由foreach语句用于迭代数组的接口。
    ICollection接口:是派生自IEumerable接口,主要用于确定集合中元素的个数,或用于同步。
    IList接口:派生于ICollection接口,Array类实现IList接口的原因是:IList接口定义了Item属性,可以使用索引器访问元素。

    4.枚举


    在foreach语句中使用枚举,可以迭代集合中的元素,而无需知道集合中元素的个数。

    5. 委托


    .Net以委托形式实现了类似于C/C++中的函数指针的概念。
    委托是一种特殊的对象类型,其特殊之处在于,我们以前定义的对象都包含数据,而委托只是包含方法的的地址。

    6. 在C#中声明委托


    在C#使用一个类时,一般分两步。首先需要定义这个类,即告诉编译器这个类是有什么字段和方法组成;然后(静态方法除外)实例化类的一个对象。
    同理,使用委托时,也需要经历两步。
    首先:要定义使用的委托,对于委托,定义它就是告诉编译器这种类型的委托代表了哪种类型的方法;
    然后:创建该委托的一个或多个实例。
    定义委托的语法如下:

    delegate  void  IntMethodInvoker(int x)

     

    delegate  double  TwoLongOp(long first, long second)

     

    delegate  string  GetString()

    总结:其语法类似于方法的定义,但是没有方法体,定义的前面要加上关键字delegate。
    因为定义委托基本上是定义一个新类,所以说可以在定义类的任何地方定义委托,既可以在另一个类的内部定义,也可以在任何类的外部定义,还可以在命名空间中把委托定义为顶层对象。
    根据定义的可见性,可以在委托上添加一般的访问修饰符:public, private, protected等。

    public delegate  double  TwoLongOp(long first, long second)

    7. 匿名方法

    匿名方法是用作委托参数的一个代码块。

    在Javascript中,你可以这样写:foo.bar(function(x){ return x < 2;}); 怎么样?够长吧?有没有发现function和return关键字有些多余。

    在C#中,我们可以这样写:foo.Bar(x => x < 2);

    8. lambdaλ表达式


    λ表达式可用于委托类型。

    就是这一坨:x => x < 2

    CTS:通用类型系统

  • 相关阅读:
    python面试题解析(python基础篇80题)
    python面试题
    网络IO模型 主要 IO多路复用
    线程队列 线程池 协程
    线程的Thread模块 同步控制:锁,事件,信号量,条件,定时器
    进程池,线程的理论,Threading.Thread来创建线程
    进程之间的通信(IPC),对列,管道,数据共享.进程池初识
    Process 进程之间的数据隔离问题,守护进程,锁,信号量,事件
    js get the local domain and path fast
    github jekyll blog
  • 原文地址:https://www.cnblogs.com/fanyong/p/2624143.html
Copyright © 2011-2022 走看看