C#知识整理
这里简单介绍了一些常用的属性,以及一些术语的解释和举例说明,不太全面,希望读者多多补充。
1.重载:函数名相同,参数的个数或参数类型不同;
publicvoidMyDog(strings); publicvoidMyDog(inti); publicvoidMyDog(strings,inti);
2.继承:一个类继承另一个类中的成员,被继承的叫做基类,继承类叫做派生类;
classA
{
成员;
}
classB:A//继承的写法派生类:基类
{
成员;
}
3.多态:可以在子类中重写父类的方法重写方法需要定义override类型
publicoverrideDuoTai()
{
Console.WriteLine("此处可以重写父类中的'DuoTai'方法");
}
4.接口:实现提供了一种规范和约束,关键词Interface
1.修饰符:newpublicprotectedinternalprivate;
2.接口成员前不允许有修饰符;
3.一个类可以继承多个接口;
4.格式:接口修饰符 关键字 接口名
publicinterfaJieKou
{
voidg();//接口成员;
}
5.抽象类:关键字(abstract)
publicabstractclassPiSaAll
{
成员;
}
6.封装(类的属性):将一组数据打包封装.
publicstringMianBing{get;set;}
publicstringShui{get;set;}
7.构造函数:与类同名,public修饰,没有返回值(不是void)
classDog
{
publicDog(strings,inti)//构造函数写法
{
Console.WriteLine("这是一只小狗!名叫{0},今年{1}岁",s,i);
}
}
Mian中调用:
Dogdog=newDog("铛铛",4);
8.成员访问控制符:
1.Public(共有的):允许任何类中的成员进行访问.
2.Private(私有的):不能被其他类中的成员访问,包括派生类也不好使.
3.Internal(内部成员):只能被程序集内的类的成员访问,而程序集外的类(包括派生类)的成员是不允许访问的.
4.Protected(保护成员):可以被本类或派生类中的成员访问,其他类中的成员不允许访问.
9.连接数据库用的语句:
1.stringconStr="DataSource=IUCL8V4Y7NW5IRA\\SQLEXPRESS;Initialcatalog=BookShopPlus;UserId=sa;Pwd=sa123"; 2.staticstrings=@"server=MY-20150918RBSF;database=Beauty;IntegratedSecurity=true"; 3.staticstrings=ConfigurationSettings.AppSettings["dbinfo"].ToString();
10.异常处理:
1.try{}catch{}
2.try{}catch{}finally{}
3.using(SqlConnectioncon=newSqlConnection(conStr)){}
11.命名空间:
1.usingSystem.Data.SqlClient;==>用于SQL数据库 2.usingSystem.Data;==>可使用Data类 3.usingSystem.Collections;==>ArrayList数组
12.ArrayList:①相当于一种高级的动态数组,Array类的升级版本.
②利于遍历数组,是一个很方便的容器类,可以存储任何引用类型或值类型.
ArrayListarr=newArrayList();
ArrayListarr1=newArrayList(30);==>可以添加到30以上Student类
arr.Add(12);==>定义int类型ClassStudent{
arr.Add(true);==>定义bool类型publicintNo{get;set;}
arr.Add("Hello");==>定义字符串类型publicstringName{get;set;}
Studentst=newStudent();==>实例化Student类}
st.No=1001;==>给st中的No赋值
st.Name="zhangsan";==>给st中的Name赋值
arr.Add(st);==>将st的值添加到arr中
arr.RemoveAt(1);==>删除数组中第二个
arr.Insert(1,"World");==>插入数据World
for(inti=0;i<arr.Count;i++)
{
Console.WriteLine(arr[i]);==>for循环便利数组
}
13.Hashtable类型:两个参数影响其性能==>初始容量、加载因子.
Hashtableht=newHashtable();
ht.Add("0531","济南市");
ht.Add("0532","青岛市");
ht.Add("0536","潍坊市");
ht.Add("0631","威海市");
Console.WriteLine(ht["0531"]);==>输出下标为0531的值,此处为"济南市";
Console.WriteLine(ht.Count);==>输出Hashtable数组的长度,此处为4;
14.ICollection类型:是IEnumerable的加强型接口,提供同步处理、赋值功能.
Hashtableht=newHashtable();
ht.Add("0531","济南市");
ht.Add("0532","青岛市");
ht.Add("0536","潍坊市");
ht.Add("0631","威海市");
ICollectionkeys=ht.Keys;==>获取Hashtable中所有的keys值,这里不是方法,所以keys后没括号
foreach(stringkinkeys)
{
Console.WriteLine("{0}-----{1}",k,ht[k]);
}
15.IEnumerator迭代器(与Hashtable)
Hashtableht=newHashtable();
ht.Add("0531","济南市");
ht.Add("0532","青岛市");
ht.Add("0536","潍坊市");
ht.Add("0631","威海市");
ICollectionkeys=ht.Keys;==>获取Hashtable中所有的keys值,这里不是方法,所以keys后没括号
IEnumeratorie=keys.GetEnumerator();==>返回访问集合的枚举数
while(ie.MoveNext())==>枚举数推进到集合的下一元素
{
Console.WriteLine(ie.Current);==>获取集合中当前元素
Console.WriteLine("{0}-----{1}",ie.Current,ht[ie.Current]);
}
16.IEnumerator迭代器(与ArrayList)
ArrayListarr1=newArrayList();
arr.Add(12);==>定义int类型
arr.Add(true);==>定义bool类型arr.Add("Hello");==>定义字符串类型
arr.Insert(1,"World");==>在第一个后面插入字符串"World"
IEnumeratorie=keys.GetEnumerator();==>返回访问集合的枚举数
while(ie.MoveNext())==>枚举数推进到集合的下一元素
{
Console.WriteLine(ie.Current);==>获取集合中当前元素
Console.WriteLine("{0}-----{1}",ie.Current,ht[ie.Current]);
}
17.List泛型:①类和方法的具体参数可延迟到客户代码中声明,实现.
②可以与任何数据类型一起工作(类、方法).
定义Student按照学号排序的类:
classMyStudentCompare:IComparer<Student>==>定义类型为比较两个对象而实现的方法
{
publicintCompare(Studentst1,Studentst2)
{
returnst1.No-st2.No;
}
}
定义Student类:
ClassStudent
{
publicintNo{get;set;}
publicstringName{get;set;}
}
定义Student泛型:
List<Student>list=newList<Student>();==>定义Student类型的泛型
list.Add(newStudent(1002,"张三2"));
list.Add(newStudent(1004,"张三4"));
list.Add(newStudent(1003,"张三3"));
list.Add(newStudent(1001,"张三1"));
list.Add(newStudent(1005,"张三5"));
list.Sort(newMyStudentCompare());==>调用定义的类方法
foreach(Studentstinlist)
{
Console.WriteLine(st.ToString());
}
18.LinkedList类型:双向列表,效率较高,只能找第一个和最后一个.
LinkedList<int>lnk=newLinkedList<int>();==>定义int类型的泛型
lnk.AddFirst(1);
lnk.AddLast(2);
lnk.AddLast(3);
foreach(varlnk1inlnk)==>var可以识别类型,var本身也是种类型
{
Console.WriteLine(lnk1);
}
LinkedListNode<int>first=lnk.First;==>获取第一个节点
Console.WriteLine(first.Value);==>把第一个节点值输出
19.Dictionary:需要引用usingSystem.Collections命名空间.
描述:①从一组键(key)到一组值(value)的映射,每个添加项都是由一个值及其相关联的键组成.
②任何键都必须是唯一的.
③键不能为空引用null,若值为引用类型,则可以为空值.
④key和value可以是任何类型(string,int,custom,class).
Dictionary<int,string>dic=newDictionary<int,string>();
dic.Add(0531,"济南");
dic.Add(0532,"青岛");
ICollection<int>key2=dic.Keys;==>获取dic中的键的集合
foreach(varkinkey2)==>var是3.0新加的功能
{
Console.WriteLine("{0}----{1}",k,dic[k]);
}
20.HashSet:是一个无序集合,不能有重复值.
HashSet<string>hs=newHashSet<string>();==>可添加string类型的数值
hs.Add("12345");
hs.Add("Apple");
hs.Add("1234");
hs.Add("Hello");
hs.Add("123");
hs.Add("World");
IEnumerator<string>ie=hs.GetEnumerator();
while(ie.MoveNext())
{
Console.WriteLine(ie.Current);
}
Console.WriteLine(hs.Count);
21.自定义泛型:
publicclassPerson<T>
{
publicTNo{get;set;}
}
注:本文纯属记事本写的,可能会产生一些代码错误,希望读者加以改正!~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!