Pulpcode

捕获,搅碎,拼接,吞咽

0%

c#基础技术问题总结

此篇文章总结c#一些常见的技术问题,每一个都是简短的解释,篇幅不大,不断更新中…

const与readonly

readonly为运行时常量,const为编译时常量。

编译时常量比运行时常量快,性能好,但是缺乏灵活性(编译时常量需要重新编译应用程序)。

编译时常量(const)仅限于数值和字符串(基元类型),C#不允许使用new来初始化一个编译时常量

const修饰的常量默认是静态的(类型)。

readonly修饰的字段可以在构造函数中被修改。

使用const较之使用readonly的唯一好处就是性能。

partial关键字

此关键字允许将类、结构或接口的定义拆分到多个文件中。

如果类的定义,其内容很多,那么分别放在不同的文件中就是一个不错的选择。

在File1.cs中

1
2
3
4
5
6
7
8
9
namespace Aiqier
{
partial class A
{
int num = 0;
void MethodA() {}
partial void MethodC();
}
}

在File2.cs中

1
2
3
4
5
6
7
8
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#类型转换