博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 复习、笔试全攻略(三、结构、枚举和数组)
阅读量:5055 次
发布时间:2019-06-12

本文共 2334 字,大约阅读时间需要 7 分钟。

  

         本系列专题主要介绍、罗列和总结了一些有关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   

转载于:https://www.cnblogs.com/BoyceFu/archive/2011/05/15/2046918.html

你可能感兴趣的文章
oracle连接的三个配置文件(转)
查看>>
Centos下源码安装git
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>
二叉树的遍历问题总结
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
pytho logging
查看>>
Python内置函数(29)——help
查看>>
对Feature的操作插入添加删除
查看>>
phpcms 添加自定义表单 留言
查看>>
oracle导出/导入 expdp/impdp
查看>>
JAVA 技术类分享(二)
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
数据结构之查找算法总结笔记
查看>>
Android TextView加上阴影效果
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
OA项目设计的能力③
查看>>
全面整理的C++面试题
查看>>
Activity和Fragment生命周期对比
查看>>