数据类型

五大数据类型:

类 结构体 枚举 接口 委托

值类型(放在栈,基类是ValueType,分配一个值)和引用类型(放在堆,基类除了ValueType都可以。指向一个内存位置)

值类型在越出定义的作用域时消失,引用类型当堆被垃圾回收时。

值类型赋值给另一个的时候,就是对字段成员进行复制。

引用类型是在内存中重定向引用变量的指向。

C#中定义的值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct)

引用类型包括:对象、类、数组、接口、委托、字符串(String)等。

字符串是不可变的。值会存在堆中。

string s1=new string("111");

会开辟两个对象,一个存内存地址在栈中,一个存数据放入堆中。

String类型的方法其实返回了一个按修改格式的新字符串对象。

在调用了大写之后,String字符串依旧没有变换。

C#可空类型 null用来建立一个空的对象引用,值类型不能被赋空。

枚举

在创建系统的时候,创建一组符号名来对应已知的数字值会很方便(符号代替数字)。 例如:

Enum EmpType

{

Manager,//默认情况从0开始, 也可以自己赋值 但也不可以不连续

Grunt,//1

Contractor,//2

VicePresident,//3

}

使用枚举

在上面的枚举中,必须以枚举名(EmpType)来设置值。

设置Grunt 

根据枚举名 EmpType  emp=EmpType.Grunt; emp的值就是Grunt。

StringBuilder

 StringBuilder sb = new StringBuilder("1111");//利用构造函数创建
            StringBuilder sb1 = new StringBuilder(20);//申请了一个占有20个字符大小的
            StringBuilder sb2 = new StringBuilder("11111", 20);//string字符串内容不可变动,如果字符串内容会频繁的变动,使用StringBuilder.
            sb.Append("2222222");
            sb.Insert(0, "0000");//在0位置加入,后面字符串向后移动
            sb.Remove(0,4);//从哪个位置开始移除,第二参数是移除的长度
            sb.Replace("2","3");//替换字符
            Console.WriteLine(sb.ToString());   
            Console.ReadKey();
StringBuilder

PS:对于字符串频繁的操作。我们建议使用StringBuilder,因为其在堆中开辟了一定大小的内存,如果增加字符串只需要往内存中添加不需要另外开辟内存空间,而string则会另外开辟内存存放新的字符串并将老的字符串复制过去。

原文地址:https://www.cnblogs.com/cdjbolg/p/11756655.html