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