2、通过构造函数只读(readonly)字段赋值。
3、采用ref传递参数,采用引用的方式,及被传入的和已传入的变量指向同一地址。由于采用引用方式,所以方法内ref参数值的改变,会使被传入的变量值发生改变。
4、采用out传递参数,是采用引用的方式,及被传的已传入的变量指向同一地址,与ref的区别是,out可以不用赋初值。
5、变长参数 params type[ ]:传参数时可将不同参数值用,隔开;变长参数一般放在众多参数的最后。
6、递归函数及自己可以调用自己的函数。
7、方法的重载及方法名相同,但是返回值类型不同或参数个数或参数类型不同。
8、using用法:
类只能是继承IDisposable接口的类;接口中都是抽象方法,及只定义方法,但不实现;继承接口的类必须实现接口中的方法;using用法中执行完大括号中的内容后自动调用Dispose方法;析构函数在对象消亡的时候被调用,但C#中对象的消亡是不受控制的,所以实际开发中不建议使用析构。
9、定义析构函数的方法及比定义构造方法前面多个~。
10、属性可以对类的一些字段进行很好的封装。
11、索引器可以不止有一个参数
public string this[string name,int x,int y]
{
get
{
return name + x + y;
}
} 索引和方法一样可以重载。
12、关于virtual/override/new的认识:
new关键字可以显示隐藏从基类继承的成员
virtual关键字表示虚方法,可以被重写
override关键字,对父类中的方法重写
13、 一个关于string类常用方法的例子:
class StringSample
{
public static void Main()
{
char[] t = new char[] { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', ' ', '!' };
string str1 = new string(t);
string str2 = "Welcome To China!";
string[] str3 = new string[2];
str3[0] = str1;
str3[1] = str2;
Console.WriteLine("Length属性:{0}",str1.Length);//字符串长度 Output:13
Console.WriteLine("ToUpper()方法:{0}", str1.ToUpper());//转换大写 Output:HELLO WORLD !
Console.WriteLine("ToLower()方法:{0}", str1.ToLower());//转换小写 Output:hello world !
Console.WriteLine("Compare()方法:{0}", string.Compare(str2, str1));//字符长比较 Output:-1
Console.WriteLine("CompareOrdinal()方法:{0}", string.CompareOrdinal(str2, str1));//每个字符相应的char值比较 Output:-15
Console.WriteLine("CompareTo()方法:{0}", str1.CompareTo(str2)); //字符比较 Output:-1
Console.WriteLine("Equals()方法:{0}", str1.Equals(str2));//字符是否相等 Output:False
Console.WriteLine("StartsWith()方法:{0}", str1.StartsWith("Hello"));//开始处是否是“Hello” Output:True
Console.WriteLine("EndsWith()方法:{0}", str1.EndsWith("Word"));//结尾处是否是“World” Output:False
Console.WriteLine("Concat()方法:{0}", string.Concat(str1, str2));//字符串连接 Output:Hello World !Welcome To Chain!
Console.WriteLine("Join()方法:{0}", string.Join("---", str3));//加分隔符连接 Output:Hello World !----Welcome To Chain!
str2.CopyTo(0,t,0,str1.Length);//复制到char数组
Array.Reverse(t);//数组信息反转
Console.WriteLine("CopyTo()方法:{0}",new string(t));
Array.Sort(t);//数组信息排序
Console.WriteLine("Sort()方法:{0}",new string(t));
Console.WriteLine("Insert()方法:{0}", str1.Insert(0, str2));//插入字符串信息 Output:Welcome To Chain!Hello World !
Console.WriteLine("Replace()方法:{0}", str1.Replace("Word", "qst"));//替换字符串信息 Output:Hello QingDao QST!
Console.WriteLine("Remove()方法:{0}", str1.Remove(5));//移除字符串 Output:Hello
Console.WriteLine("PadLeft()方法:{0}", str1.PadLeft(30));//填充长度,填充在左边 Output: Hello World !
string str4 = " Hello ";
Console.WriteLine("Trim()方法 长度:{0},结果:{1}",str4.Length,str4.Trim());//去掉左右两边的空格 Output:Hello
Console.WriteLine("IndexOf()方法:{0}",str1.IndexOf("Word"));//查找字符串的位置 Output:6
Console.WriteLine("Substring()方法:{0}", str1.Substring(6, 5));//截取字符串 Output:World
Console.WriteLine("Contains()方法:{0}", str2.Contains("To"));//是否包含“To”字符串 Output:True
str3 = str1.Split(' ');//设定分隔符,返回分隔后字符串数组
foreach(string s in str3)
{
Console.WriteLine(s);
}
Console.Read();
}
}