C#几对修饰符的比较(三)implicit与explicit

这几天写序章剧情战斗模版时,出现一些让人感觉很难受的类型转换的情况.
简单说就是从一个正常情况下全是class A实例的池子里,取出object b (b实际上也是A类型的),赋值给一个class A的变量a.这时,就需要把b再强制转换回class A.

这个过程虽然没什么问题,但是让人感觉很蛋疼. 究其原因,应该是因为从池子里取出object的方法为了追求其普适性,而把返回值设为了object.
现在产生了这种不太自然的情况,让我开始怀疑这种追求普适性的做法是否是正确的.也许我应该用泛型或者重载处理下?
继续阅读C#几对修饰符的比较(三)implicit与explicit

C#几对修饰符的比较(二)override与new

override和new都是用于实现多态的修饰符。

貌似比较通用的译法分别是重写和覆盖,也有分别叫覆盖和隐藏的。个人更倾向于前一种译法,不过也不用在这太纠结。

  • 用法上,二者的区别在于:

    override专用于虚拟(virtual)方法、抽象(abstract)方法和接口(interface),不能用于实方法;
    而new则用于实方法,也可用于虚拟方法,但不能用于抽象方法和接口。

继续阅读C#几对修饰符的比较(二)override与new

C#几对修饰符的比较(一)const与readonly

const修饰符用来声明常量字段或常量局部变量;readonly修饰符用来声明字段是”只读”的。

二者的作用相似,都是修饰声明一个常量。但在实现方式上有所区别,因此也有很多特性区别,导致它们的实际应用场合也不同。

二者根本的差别在于:const修饰的是静态常量,readonly修饰的是动态常量。

继续阅读C#几对修饰符的比较(一)const与readonly