所有数组都继承于基类system.Array

时间:2021-11-18 06:11:11

首先,数据类型分为值类型和引用数据类型以及指针类型(暂不涉及):值类型是指直接储存在内存的栈上面,引用类型则在栈上储存一个引用,在堆上储存具体的值。

值类型分为内建类型和用户可以自界说的struct类型、enum类型,这些类担任于system.ValueType类,而system.ValueType担任于system.Object类,Object类是所有类的基类。

值类型如int、bool都是凡是使用的别号,正式名为system.Int32、system.Boolean。

此外可以用var来定名一个变量,这样可以暂时不确定他的数据类型。

struct类似于JAVA中的分装类型,用于自界说一个类,可以包罗差此外属性;

enum枚举类型相当于设定了一个数列,所成立的变量只能取值数列中的值,每个值自动默认对应从0开始的int值,但是可以手动强制从另外数开始或者强制为其他的数据类型。

举个栗子: days : short { monday = 5, tuesday, wenesday, thursday, friday, saturday, sunday }

struct和enum类型的界说要写在main要领体外!!!!结束没有分号!!!!

引用类型首先是三个内建类型:string、object、dynamic。此中dynamic强制规定类型查抄在运行阶段而不是编译阶段。

string类型两种赋值方法可以得到不异的值,但是在底层的价钱是差此外(两种要领:string a="abcdefg";string b="abcd";b+="efg"),建议使用第一种,第二种对系统需求的价钱较大,需要经常改削的值可以使用stringbuilder类型获得可变长的内存空间。

重点:stringbuilder要领AppendFormat使用要领

StringBuilder s = new StringBuilder ();
s.AppendFormat("hello{1}{0}","ld","wor");

可以将s值赋值为helloworld。

接下来是class类型,,class类可以包罗成员变量和内部要领,默认的访谒修饰符是private,外部不成访谒,可以手动改削为public。C#的get set要领不是单独的要领而是使用关键字get set,直接挪用get set关键字就可以使用对应的要领;静态要领绑定与class名,不成以用实例化的东西访谒,而是用类名直接访谒。

interface接口内部只能声明要领,没有具体的实现要领,子类中必需要实现接口中的要领。

abstract class抽象类是不能被实例化的,但是内部可以界说要领,子类可以默认的挪用抽象类内部的要领,也可以在自身内部重写同名要领,实现要领的重载。接口不成以包罗成员变量,抽象类可以具有本身的成员变量,并且被子类担任。

类的分类熟悉之后是类的转换,C#中的类型转换分为显示转换和隐式转换,C#是一种强类型的语言,在编译时会查抄类型。

隐式转换适用于范畴较小的类转为范畴较大的类,不会有值的丢掉,显示转换则适用于范畴较大的类转换为范畴较小的类,但是容易造成值得精度等丢掉。

类型转换中有两个重要的关键字as,is。

is用于判断能否转换为一个类,输出功效为ture或者false,分袂暗示是否可以转换为方针类型,如果是ture,则可以使用as进行转换,但是as只能用于引用类型和非空类型,如果用于值类型的转换则会报错,因为在转换时由大类转为小类会赋值给小类一个空值,而值类型不成以为空。

值类型的转换可以使用convert类下的要领或者对应类下的parse要领或者TryParse要领,使用TryParse要领转化不能转化的值时会赋值一个默认值。还可以使用担任接口IConventible或TypeConventer来自界说本身得类型转化要领。

值类型和引用类型的互相转换凡是称为装箱和拆箱,装箱属于隐式转换,不需要专门的语法,拆箱则可以通过显示转换实现。

拆装箱有一个常见的问题是不成为空的类型被赋值为空,这会报错,解决的方法可以在变量定名时变量名后加?来使得这个值可为空,同等意义的定名要领还有System.Nullable<int> i=10;这时这个i可以被赋值为空,但是读取时会报错,解决要领是使用HasValue来取值,为空则会返回false,或者使用要领GetValueOrDefalt,在空值是返回默认值。改削默认值可以使用双问号:int k=i ?? 20;则在i为空时赋值k为20,如果i有值则正常赋值。

接下来是数组,数组是一个引用类型,所有数组都担任于基类system.Array,这是一个抽象类,不能被实例化。

一维数组int[] numbers=new int[5];

二维数组int[,] numbers=new int[5,4];

数组的数组int[][] numbes=new int[5][4];

数组的数组又被称为交错数组,每一行可以有差此外长度。

以上都是固定长度的数组,所有数组的长度都是在界说时确定的,如果要使用变长的数组可以使用ArrayList数组列表,数组列表可以储存差此外类型,易引起混乱,建议使用List,List可以使用泛型规定内部的值类型。写法如下List<int> intList=new List<int>();这个列表中就只能使用int类型的值。