一.基础部分:
1.static方法属于类而不属于对象 即c#中不能用对象调用该类的静态成员(c++ java都可以的)
建议:
switch语句一定要有default来处理意外情况
尽量不用this
避免在同一个文件中使用多个类
关键语句写注释
尽量使用接口
命名规范:
所有的成员变量前加前缀_
接口的名称加前缀I
方法的命名为动宾短语 比如 creatFile()
类中 数据成员写到函数前面 用换行分隔
2.为赋值的内置变量不能直接使用 会编译出错
整数类型:
sbyte 8位有符号
byte 8位无符号
short 16位有符号
ushort 16位无符号
int32位有符号
uint 32 无
long 64位有符号
ulong 64 无
decimal decimal数据类型和double差不多 不过精度非常高 最大精确到小数点后28位 占12个字节
初始化和直接赋予的值必须符合变量类型的规定 比如 byte b = -1; b = -1会编译出错 但byte b = 0; b-= 1;可以通过 会溢出
string在C#中是变量
装箱 将值变量转换成引用变量 拆箱 将引用变量转换成值变量 int i = 1; object o = i;//装箱 int j = (int)o;//拆箱 作用:互转值变量和引用变量
它在value-type 和reference-type之间的架起了一座桥梁,使得任何value-type的值都可以转换为object类型的值,反过来转换也可以。装箱和拆箱使我们能够统一地来考察类型系统,其中任何类型的值最终都可以按对象处理。
C#中应该尽量避免装箱和拆箱操作,因为这样会对性能造成一定的影响。
在.NET2.0中提供了泛型,应尽量使用泛型。
bool变量不能与其他变量进行转换 当为静态类变量的时候 不初始化即可使用 为false
String 字符串
string = System.String
compare(str,str)静态方法 返回1 0 -1
compareTo(str2)动态方法 同上
Equal/equal 同上 但返回bool型
format函数 类似于c的printf 只是返回值是一个string 更多格式参见 http://www.cnblogs.com/linbaoji/archive/2009/09/03/1559821.html
split分隔字符串 用法:
String s = "123,456 789"; char[] c = { ',', ' ' };//将逗号 空格设为分隔标记 String[] sr = new string[30];//用来放分隔后的字符串片段 sr = s.Split(c); for (int i = 0; i != sr.Length; ++i) { Console.WriteLine(sr[i]); }
遍历数组的循环语句
foreach (int temp in arr)
{
Console.WriteLine(temp);
}
**数组的长度可以使用变量
一般的数组是Array类的子类
ArrayList是他的升级版 位于System.Colloection命名空间下 支持一些动态功能 ArrayList只能是一维的
ArrayList元素的类型由第一个进入数组的元素类型确定
//哈希表键值对读取和查找 Hashtable a = new Hashtable(); a.Add("id", 123); a.Add("sex", "nan"); Console.WriteLine("\t键 \t值"); foreach (DictionaryEntry dic in a) { Console.WriteLine("\t" + dic.Key + '\t' +dic.Value); } Console.WriteLine(a.Contains("nan"));//只能查找键 而不能是值 Console.WriteLine(a.ContainsValue("nan"));//查找值
属性
相当于方法
class Test { private int a = 1; public int aa { get { return a; } set { a = value;//value就是设置的时候得到的值 } } }
如果没有set 则为只读的属性