要点笔记
一、变量的初始化和作用域
1、c#的变量在使用前必须初始化,遵循的两个规则:
1)、变量是类或者结构中的字段,如果没有显式初始化,创建这些变量时,默认值为0(0,false,空字符串,null).
2)、方法的局部变量必须在代码中显式初始化。
2、变量的作用域
1)、成员变量的作用域和类的作用域相同。
2)、局部变量存在于声明该变量的方法或者块语句之内。
作用域冲突:
private void ScopeTest() { int j = 20; while (true) { int j = 30;//error 作用域冲突(P:区别于c++) } }
作用域隐藏:
class TempClass { int j = 20; static int k = 100; public void ScopeTest() { int j = 30; //ok,隐藏了类的成员变量 int k = 110; //ok,隐藏了类的成员变量 } }
二、C#预定义数据类型
1、分类:
值类型:存储值,存储在堆栈中。
引用类型:存储在托管堆上。
CTS(Common Type System)类型:c#认可的基本数据类型并没有内置于c#语言中,而是内置于.netframework中。
c#中声明了一个int类型的数据时,实际上声明的是 System.Int32的一个实例(但性能并没有损失)。这在语法上表示,
可以把所有的基本数据类型看作是支持某些方法的类,如把int转换为string:int i; string s= i.toString();
c#中声明了一个int类型的数据时,实际上声明的是 System.Int32的一个实例(但性能并没有损失)。这在语法上表示,
可以把所有的基本数据类型看作是支持某些方法的类,如把int转换为string:int i; string s= i.toString();
2、 预定义的引用类型
1)、object类
1)、object类
2)、string类
虽然分配在托管堆上,但执行赋值等操作时,仍然类似于值类型。
虽然分配在托管堆上,但执行赋值等操作时,仍然类似于值类型。
string的转义符:\
string a="C:\\windows\\Debug";
另一种替代方式,在字符串前面加上字符@,如 string a=@"C:\windows\Debug";
甚至允许在字符串中包含换行符,如:
string s=@"hello,welcome here
My dearing!";
s的值就是:hello,welcome here
My dearing!
三、C#流控制(略)
四、C#枚举
枚举的定义:
public enum TimeofDay
{
Morning =0,
Afternoon=1,
Evening =2
}
public enum TimeofDay
{
Morning =0,
Afternoon=1,
Evening =2
}
枚举类的使用:
public void EnumTest()
{
//获取枚举类的字符串表示
TimeofDay time = TimeofDay.Evening;
string s = time.ToString();//返回Evening
//获取枚举类的值
TimeofDay time2 = TimeofDay.Evening;
int i = (int)time2;
//根据字符串表示获取枚举类的值
TimeofDay time3 = (TimeofDay)Enum.Parse(typeof(TimeofDay), "afternoon", true);
int j = (int)time3;
}
{
//获取枚举类的字符串表示
TimeofDay time = TimeofDay.Evening;
string s = time.ToString();//返回Evening
//获取枚举类的值
TimeofDay time2 = TimeofDay.Evening;
int i = (int)time2;
//根据字符串表示获取枚举类的值
TimeofDay time3 = (TimeofDay)Enum.Parse(typeof(TimeofDay), "afternoon", true);
int j = (int)time3;
}
五、C#命名空间
命名空间是一种逻辑组合,而不是物理组合,与程序集无关。
命名空间可以使用别名,可以通过GetType().Namespace返货类的命名空间。