引用类型成员包括:类 接口 数组 委托 objiect string
//后者在使用new关键字后是先申请地址然后在 堆 里面储存值
List<int> list2; //在栈上申请地址
List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5 };//关键字new,在堆上申请空间,存值(实例化)
List<int> list1 = list; //此时list和list1 的值都是堆上面的同一值(值类型是在 栈 上面申请新的一个内存复制储存)
list1.RemoveAt(0); //移除指定索引(下标)的元素
list1.Add(0); //
foreach (int h in list1)
Console.Write(h);
int i = 0;
int j = i;
j = 4;
//Console.WriteLine(j); //(值类型是在 栈 上面申请新的一个内存复制储存)
string str1 = "abcd";
string str2 = str1;
str2 = "acefg"; //引用里面string类型和 值类型类似 ,区别是它在 堆 里面申请一个空间储存值
//int in_1 = str2.IndexOf('g'); //查找指定元素的下标
int in_2 = str2.IndexOfAny(new char[3] { 's', 's', 'f' });//查找指定字符的下标,谁在字符串中排第一个就查谁,所以此处查的是f的下标
//注意:只有string类型 在定义变量时不需要new关键字
string str_1 = str2.Insert(4, "HD");//在指定索引的位置前面插入字符串
string str_2 = str2.Remove(7, 2);//指定索引开始(7,2)删除指定数量的字符
string str_3 = str2.Replace('b', 'c');//把新的字符替换指定的字符,如果里面有多个相同的字符就全部替换
str2.Split('b'); //按指定元素来分割(没搞懂该怎么输出分割)
str2.CompareTo(str1);
string str_4 = str2.Substring(0, 5); //输出指定索引开始的位置和长度
char[] cha_1 = str2.ToCharArray(); //
str2.ToLower(); //把字符改成小写
str2.ToUpper(); //把字符改成大写
str2.Trim(); //移除指定开头和结尾的字符
str2.TrimEnd(); //移除指定结尾的字符
str2.TrimStart(); //移除指定开头的字符
Console.WriteLine(str2.Length); //获取长度
Console.WriteLine(str2.PadLeft(10, 'B')); //向左添加指定的字符,来达到指定的字符串长度,少几个就填充几个
Console.WriteLine(str2.PadRight(10, 'B')); //向右添加指定的字符,来达到指定的字符串长度,少几个就填充几个
str2.GetType(); //获取当前实例的类型
string b = string.Empty; //和 b=" "; 是一个意思 表示这个字符串为空
b = null; //表示它不存在