string
string str1="aaa";
str1+="bbbb"
一旦字符串创建后就不能修改了,+=时会在堆里重新开辟空间aaabbbb,非常耗费资源
StringBuilder
System.Text;//命名空间
StringBuilder sb = new StringBuilder(); sb.Append("aaa"); sb.Append("bbb"); Console.WriteLine(sb.ToString()); //返回aaabbb
创建字符后,Append时会在原来的堆加入字符
控制语句
对一个集合(datatable list arrarylist )或数组()进行遍历(从第一个到最后一个)
string[] aString ={"aaa","bbb","ccc"}; foreach (var a in aString)//元素 { Console.WriteLine(a); }
异常错误
错误:语法上有问题,是不能够编译通过的
string s1 = 1;//错误 1 无法将类型“int”隐式转换为
Console.WriteLine(s1);
异常:是可以编译通过的,但是不能够正常的运行
缺点:页面会显示源代码的错误信息,是不安全的,非常不好的用户体验
string[] aString = { "aaa", "bbb", "ccc" }; Console.WriteLine(aString[4]);//超出了范围
异常处理:把可能发生异常的地方放在try里面,当发生异常时,就来捕获它
try//不发生异常执行的内容 { string[] aString = { "aaa", "bbb", "ccc" }; Console.WriteLine(aString[4]); } catch (Exception ex)//发生异常执行的内容 { Console.WriteLine(ex.Message);//索引超出了数组界限 Console.WriteLine("网站正在维修中...");//可显示友好的内容 } finally//不管是否发生异常,都执行的内容 { Console.WriteLine("不管是否发生异常,都执行的内容"); }
数组和集合
存储数据集合
一维数组
int[] i = {1,2,3};//常用
int[] i= new int[3]; a[0]=1; a[1]=1;
int[] i=new int[3]{1,2,3};
foreach (var i in a) { Console.WriteLine("i的值{0}", i);//打印元素 Console.WriteLine(a[i-1]);//打印所有元素,下标从0开始 }
二维数组
int[,] a={{1,2},{2,3},{3,4}};
缺陷:不能添加内容,修改,清空,功能较少
集合:存放数据的容器,可以添加、修改、清空
System.Collections;
.RemoveAt(0)删除第一个元素
.Add(0)在末尾添加0
.Insert(1,5)在索引值为1处插入5
.Clear()清除现有所有元素
char[] aChar = { ‘a‘,‘b‘,‘c‘,‘d‘,‘e‘}; ArrayList alist = new ArrayList(); foreach (var a in aChar) { alist.Add(a); } foreach (var al in alist) { Console.WriteLine(al); }
Object是任何数据类型的父类,是属性于引用类型的。
alist.Add(Object); int 会有装箱操作,消耗时间,性能会受影响。为了解决此种情况就有了泛型,也叫object的泛型写法。.
根据需求去变化 int string arrary object datatable 是可以放到arrarylist里
泛型
只添加一种数据类型
System.Collections;
也有添加、删除、修改的操作。
List<int> list=new List<int>(); int[] aNumber={1,2,3}; foreach(var a in aNumber) { list.Add(a); } foreach (var al in list) { Console.WriteLine(al); }
List<string> alist=new List<string>();
当对数组进行非常频繁的操作,顺序就会有些乱,要精确定到某一个具体的值就需要用到Hashtable
HashTable
key value 方式存储的,可以进行精确定位。
Hashtable ht = new Hashtable(); ht.Add("key1", "aaa"); ht.Add("key2", "bbb"); foreach (var key in ht.Keys) { Console.WriteLine(ht[key]); }
HashTable存储的也是Object类型的数据,会有频繁的进行装箱操作。所以有了Dictionary,也叫
HashTable的泛型写法。
Dictionary
只添加一种数据类型
Dictionary<string, string> dt = new Dictionary<string, string>(); dt.Add("key1", "aaa"); dt.Add("key2","bbb"); foreach (var key in dt.Keys) { Console.WriteLine(dt[key]); }
都需要掌握,不要停留概念上。
面向对象的三大特征
封装
对于一个类,默认的访问修饰符是internal
方法、变量的默认访问修饰符是private
连接字符串 是private 核心