Introduction
此篇文章总结c#一些常见的技术问题,每一个都是简短的解释,篇幅不大,不断更新中…
const与readonly
readonly为运行时常量,const为编译时常量。
编译时常量比运行时常量快,性能好,但是缺乏灵活性(编译时常量需要重新编译应用程序)。
编译时常量(const)仅限于数值和字符串(基元类型),C#不允许使用new来初始化一个编译时常量
const修饰的常量默认是静态的(类型)。
readonly修饰的字段可以在构造函数中被修改。
使用const较之使用readonly的唯一好处就是性能。
partial关键字
此关键字允许将类、结构或接口的定义拆分到多个文件中。
如果类的定义,其内容很多,那么分别放在不同的文件中就是一个不错的选择。
在File1.cs中
namespace Aiqier
{
partial class A
{
int num = 0;
void MethodA() {}
partial void MethodC();
}
}
在File2.cs中
namespace Aiqier
{
partial class A
{
void MethodB() {}
partial void MethodC() {}
}
}
sealed关键字
当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。
new和override
Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名。
New关键字主要用来区别派生类和基类同名方法的选择问题,通过隐藏基类方法,达到使编译器调用正确的方法的目的。
也就是说New 关键字在作为修饰符用于向基类成员隐藏继承成员时,对于派生类该关键字指示方法是重写的新方法,但是关闭了多态性。具体调用的方法为声明时变量的方法。
C#中using语句怎么用?
说道using的话,首先要说的就是.Net中的两种资源,也就是托管资源和非托管资源。
托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象。
非托管资源:不受CLR管理的对象,如Windows内核对象,文件,数据库连接,套接字,COM对象。
这里要注意,假如说你的类型需要显式释放资源,那么一定要继承IDispose接口。
而这个IDispose接口就是为using语法糖提供便利,那种在finall处调用Dispose函数的try-catch-finally语句块,其实和using语句生成的IL代码基本上完全一致。
c#类型转换
见我之前写的博客: c#类型转换
更多信息请查看IT技术专栏