1.命名空间的使用
1.1 命名空间是.net中对代码逻辑意义上的划分,类似于java中的包,但是,命名空间不像包对应与物理上的文件路径。
1.2 命名空间使用using关键字来引出。关于using的更多用法可以参考anytao的using使用。
1.3 命名空间的嵌套使用及别名
namespace LevelOne
{
using LT = LevelTwo; // 定义别名
public class LevelOneClass
{
static string LevelOneName = "OneName";
LevelOne.LevelTwo.LevelTwoClass twoClass1; //通过完全路径应用
LevelTwo.LevelTwoClass twoClass2; // 由于LevelTwo在LevelOne内部,所以可以直接引用LevelTwo路径
LT.LevelTwoClass twoClass3; // 通过别名方式引用
}
namespace LevelTwo
{
using LO = LevelOne; // 定义别名
using LOC = LevelTwoClass;
public class LevelTwoClass
{
static string LevelTwoName = "TwoName";
LevelOne.LevelOneClass oneClass1; // 通过完全路径访问
LevelOneClass oneClass2; // LevelOneClass在LevelTwo外层,可以直接访问
LO.LevelOneClass oneClass3; // 通过别名访问
LOC loc = new LOC(); // 通过别名使用类
}
}
}
2.运算符优先级
优先级有高到底:
++,--(前缀);+,-(一元)
*,/,%
+,-
=,*=,/=,%=,+=,-=
++,--(后缀)
3.循环中断
C#提供了四个命令:
1.break---立即终止循环
2.continue---立即停止当前的循环,继续执行下一次循环
3.goto---跳出循环到已知标记(不建议使用goto)
4.return---跳出循环及其包含的函数
4. %运算符和/运算符
%:为取余运算符,如 5 % 2 = 1
/ :整除运算,如 5 % 2 = 2
5. 常见类型及类型转换
1. .net类型分支类型和引用类型
2. 值类型:简单类型,结构体,枚举;引用类型:字符串,类,接口等
3. 简单类型:数值类型,布尔类型,字符类型
4. 数值类型:整型和浮点型。整型包括:byte(非负),short,int,long 和 sbyte(含负数),ushort,uint,ulong
其上类型在.net中有如下别名与之对应:System.Byte,System.Int16,System.Int32,System.Int64和System.SByte,System.UInt16,System.UInt32,System.UInt64
浮点型包括:float,double,decimal,其别名分别为:System.Single,System.Double,System.Decimal
5. 布尔类型和字符类型:bool(System.Boolean),char(System.Char,一个Unicode字符,两个字节)
6. 字符串类型是引用类型,但是其使用过程又像是值类型。
7. 字符类型和数值类型之间的转换
char ch = 'a';
ushort b = ch;
Console.WriteLine("ch:{0}", ch);
Console.WriteLine("b:{0}", b);
8. 转义字符
\a:警告声
\r:回车:Console.Write("rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr\rkkkkkkkkkkkkkk");
结果:kkkkkkkkkkkkkkrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
\n:换行:
9. @对于字符串的作用
@+字符串:忽略字符串中的转义字符,如:@"c:\window\a.txt" ,等效于 "c:\\window\\a.txt"
甚至可以这样使用:string str = @"a
bcd"; 空格和回车直接作为字符串的一部分,否则回车必须使用/r/n;
10. 类型转换:隐式转换和显式转换。
隐式转换:使用=操作符,直接将小范围类型的变量赋值给大范围变量,或子类变量赋值给父类变量,转换操作有编译器完成。
显示转换:当需要将大范围的变量转换为小范围的变量,或将父类赋值给子类,或者执行不同类型的转换(如:IntToString 或 StringToInt)
Animal animal = new Animal();
Bird bird = new Bird();
animal = bird; // 隐式转换
bird = (Bird)animal; // 显示转换
byte b = 7;
int myi = 33333;
b = (byte)myi;// 显示转换 ----------该显示转换涉及到两个关键字checked和unchecked方法。
b = checked((byte)myi); 当转换溢出时会抛出异常,执行溢出检测,默认使用unchecked开关。
myi = b; // 隐式转换
b = checked((byte)myi);
string str = "100";
myi = Convert.ToInt32(str);// 显示转换
11. 枚举
1.枚举默认情况下是int类型,但可以是任意的数值类型,包括byte,sbyte,short,ushort.....
定义一个byte类型的枚举,枚举值可以相同
enum typeName : byte
{
value1 = 1,
value2 = 1,
value3 = 3,
value4 = 1
}
2.枚举的几种类型转换操作 byte,enum,string
typeName myEnum = typeName.value1;
string myEnumStr = myEnum.ToString(); // EnumToString
byte myEnumByte = (byte)myEnum; // EnumToByte
typeName myEnum2 = (typeName)Enum.Parse(typeof(typeName), "value2"); // StringToEnum
12. ref,out,params区别
ref:引用类型参数,通常方法调用使用的参数为值类型,当使用ref关键字显示作为参数前缀时,传递的是参数的引用,则其修改会直接反映到实参。引用类型参数使用前必须先初始化。
out:输出类型参数,也是引用类型,但是与ref的区别是,使用前不必先初始化。允许多个输出参数,这样,对于需要多个返回值时,out方式是很有用的。
ref和out类型的参数,如果光只有这两个关键字作为区分,不能构成方法的重载。
params:数组类型参数,一个方法只允许使用一个params关键字,并且不允许其他关键字一起使用。