C# 复习、笔试全攻略(三、结构、枚举和数组)

上一篇:C# 复习、笔试全攻略(二、.类)

  

         本系列专题主要介绍、罗列和总结了一些有关C#的基础知识。

   旨在面试前或想复习C#基础知识时看看,希望对大家有所帮助。

   如发现错误,还望多多指教!

  

  

  

一、结构

 

1、定义:是程序员定义的类,非常类似于类,有数据成员和函数成员;

    与类的区别:类是引用类型而结构是值类型;结构是隐式密封的,意味着它不能被派生

2、结构是值类型:结构类型的变量不能为null;两个结构变量不能引用同一对象

3、字段初始化是不允许的

struct Simple

{

public int x;

public int y;

}

4、构造函数(实例、静态)  但不允许有析构函数

     实例构造函数:语言隐式地为每个结构提供一个无参数的构造函数,成员为默认值;

                         它不能删除和重定义,但可以另外创建,只要它没有参数;调用时,都要使用new运算符

                 Simple si = new Simple();

                 Simple s2 = new Simple (5,10);

             也可不使用new创建结,但有限制:不能使用数据成员的值,直到显示的设置它

             不能调用任何函数成员,直到所有数据成员已经被赋值

                 Simple s1,s2;

                 Console.write(s1.x);               //编译错误

                 S2.x = 5;s2.y=10;

                 Console.write(s2.x);               //成功

5、静态构造函数:和类的一样;

                        在下面两个行为的第一个之前被调用:调用显示声明的构造函数;

                        对结构静态成员的引用

6、结构是隐式密封的,不能派生其它结构,不支持继承

    不能用于结构的修饰符有:protected、internal、abstract、virtual

    结构本身派生自 System.ValueType,System.ValueType派生 object

7、附加信息:结构可以声明partial结构;

                  实际上在.NET中预定义简单类型(int、short、long) 都被实现为结构;

                  它可实现接口;




二、枚举 

1、定义:是程序员定义的类,是值类型;

         它只有一种类型的成员:命名的整数值常量;底层整数类型默认为int

         不能对成员使用修饰符;

   Enum Color

   {

        Green,

        Yellow,

        Red

   }

        由于成员是常量,在没有该类型的变量是也可访问,Color.grren

        枚举的比较要在同一枚举类型中才能比较

2、设置底层类型(除了char以外的任何整数类型)和显示值:

        enum MYenum : ulong {grren = 0 ,red = 1}    注:ulong为底层类型(默认为int)




三、数组 

1、数组的类型:一维数组(单行元素或元素向量)

                     多维数组:矩形数组(rectangular array)、交叉数组(jagged array)

2、数组是对象:数组实例是从System.Array继承的对象;

                      数组是引用类型

                      根据数组元素类型有:值类型数组和引用类型数组

3、一维数组和矩形数组:

       声明:  int [,,] arr;   不允许维度长度

       实例化:int [,,] arr = new int[3,4,5];

       初始化:显示初始化 int []  intarr = new int[]  {10,20,30,40};

                            int [] intarr =                {10,20,30,40};

                            int [,] intarr = new int[,] {{10,1},{2,4},{3,4}};

                            int [,] intarr =                {{10,1},{2,4},{3,4}};

             逗号用作元素和分组之间的分隔符;

             逗号不在左或右花括号之间使用;

             最后一个为”元素“,其它为”分组“

       隐式类型数组:string[] sArr = new string[] {"ad","bd"};

                           var       sArr = new         [] {"ad","bd"};

4、交叉数组:

       声明:int arr[][];

       实例化:int arr[][] = new int[3][,];

                  arr[0]= new int[,] {{1,2},     {100,200}   };

                  arr[1]= new int[,] {{4,5,6},  {40,50,60}   };

                  arr[2]= new int[,] {{8,9,10,11},{11,22,33,44}};

5、数组协变(covariance):在对象不是数组的基类型,也可以把它的值赋给数组元素;

     条件:数组是引用类型;在赋值的对象类型和数组基类型之间有隐式转换和显示转换

Class A{…}

Class B:A{…}

A[] array1 = A[2];

A[] array2 = A[2];

array1[0]= new A();       //普通:将A类型的对象赋给A类型的数组

array1[1]= new A();

array2[0]= new B();       //协变:将B类型的对象赋给A类型的数组

array2[1]=new B();

6、数组继承的成员

       属性:Rank(数组维度)、Length(数组长度)、

       方法:sort(顺排序)、Reverse(倒叙)、IndexOf(返回遇到第一个值)、Clone(浅复制)

               GetLength(维度的长度)、Clear、GetUpperBound(指定维度的上限)




本节结束语:

      如果大家觉得本节还将就,就给小弟推荐一个咯!呵呵....!因为这些都是我的总结笔记,如果不详,可与我联系!

      有关本系列以后章节,还望继续关注!

 

 

作者:Boyces    http://www.cnblogs.com/BoyceFu/



posted @ 2011-05-15 15:42  Boyces  阅读(1934)  评论(5编辑  收藏  举报