C#语法拾遗


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

C#语法拾遗

1,using;

* using 命名空间名字;
* using 别名 = 包括详细命名空间信息的具体类型,以区别两个不同命名空间有相同的类名。
* using定义范围:即时释放资源,在范围结束时即时释放资源,
* 如: using (StreamWriter w = File.AppendText(“c:\\temp.txt”))
{
Log(context, w);
w.Close();
}

2,@符号的使用

* 将转义符当成一般字符使用:string s = @”c:\a.txt”;
* 忽略换行:string s =string s = @”sdf
sdf
sfsdf”;

3,预处理命令

* #warning 和#error : 若编译器遇到,则产生警告或错误信息,以提示开发者,而#error会直接退出编译
* 如:#warning : 测试使用,正式发布时请去掉下句代码
* #region description #endregion 将一段代码标记为一个指定名称的代码块,可直接折叠,便于阅读

4,对于引用类型,==类似于比较文件夹的路径是否相同,而equals()比较的是文件夹中的内容是否一样。注:对于string,==比较的是值。
原理:==比较的是栈,值变量存储在栈中,而引用类型地址也是存储在栈中。而equals比较的是堆,而引用类型的值就存在于堆中。
引用类型对应有多个字段,故地址存放于栈中,多个字段存放于堆中。

5,const是编译时常数,须在最开始赋初值,默认是static, 而readonly是运行是常数,默认不是static.

* const是编译时常数,故不能修饰引用类型,因为引用类型的构造要在运行时完成。不过string与null除外。
* 注:数组也是引用类型,同样不可用const修饰。
* const默认是static,故不可在非静态方法中修饰局部变量。

6,sealed:不可继承,断子绝孙。virtual与override进行覆盖。

7,变量与属性的区别:属性是对字段的一种封装,可以控制读写,体现了面向对象的封装性。

8,class与struct的区别:class是引用类型,内存分配于堆上,而struct是引用类型,内存分配于线程的栈上。