进阶教程六的
民生视野 2021-08-24 13:34 字号: 大 中 小
现在我要说的是C#中的版本处理.其实这是任何一个软件必须要考虑的问题.每个软件都不只一个版本(除了我写的以外),因此版本处理显得非常地重要.JAVA很好地处理了这个问题,而我个人认为C#借鉴了JAVA的处理方法,所以,也做得很好.
在C#中,如果你在声明一个方法的时候用了virtual这个关键字,那么,在派生类中,你就可以使用override或者new关键字来弃用它或是忽略它.如果你在父类中用了virtual这个关键字,而在其派生类中又没有用override或new关键字,而直接引用一个同名方法的话,编译器将会报错,并将以new方式,即忽略派生类中的方法的方式来运行.下面的例子可以帮助你来理解:
000: // Versioning\\
001: public class MyBase
002: {
003: public virtual string Meth1()
004: {
005: return \"MyBase-Meth1\";
006: }
007: public virtual string Meth2()
008: {
009: return \"MyBase-Meth2\";
010: }
011: public virtual string Meth3()
012: {
013: return \"MyBase-Meth3\";
014: }
015: }
016:
017: class MyDerived : MyBase
018: {
019: public override string Meth1()
020: {
021: return \"MyDerived-Meth1\";
022: }
023: public new string Meth2()
024: {
025: return \"MyDerived-Meth2\";
026: }
027: public string Meth3() // 系统在这里将会有一个警告,并且将会隐藏方法Meth3()
028:
029:
030: {
031: return \"MyDerived-Meth3\";
032: }
033:
034: public static void Main()
035: {
036: MyDerived mD = new MyDerived();
037: MyBase mB = (MyBase) mD;
038:
039: iteLine(th1());
040: iteLine(th2());
041: iteLine(th3());
042: }
043: }
输出:
MyDerived-Meth1
MyBase-Meth2
MyBase-Meth3
可以很明显地看出来,后两个new关键字的输出是父类中的方法的输出,所以可以看出,new这个关键字的作用是如果在以前的版本中有这个方法,就沿用以前的方法,而不用我现在方法内容.而virtual的方法的作用正好相反,它的作用是如果在父类中有这样一个方法,则用我现在写的方法内容,让以前的滚蛋!不过,这里用new好象不太好,让人误解(糟了,盖痴又要打我了!*%$#@).
如果你把第037行去掉,把中的mB全部改为mD,输出又变为:
MyDerived-Meth1
MyDerived-Meth2
MyDerived-Meth3
这又说明了什么呢,说明了派生类的对象只有在被父类重塑的时候,override和new关键字才会生效.呵呵,这样说的确有点难以理解,大家只有自己动手,才能搞清楚这其中的机关,所谓\"实践是检验C#的唯一标准\",哈哈!
在C#中,你可以自由地为在派生类中为加入一个方法,或者覆盖父类的方法,如下所示,非常地简单:
class Base {}
class Derived: Base
{
public void F() {}
}
和:
class Base
{
public void F() {}
}
class Derived: Base
{
public void F() {}
}
好了,这一节又完了,音乐还没完,但是我真的要休息了,明天见!
但失败神剑以及逐日积分不会减少 查看本文来源
孩子消化不良怎么调理乌鲁木齐哪医院白癜风好
鹰潭治疗白癜风哪家医院好
-
-
巴神点拨老东家米兰该醒醒了最该买的人是他
巴神点拨老东家:米兰该醒醒了!最该买的人是他巴神:米兰...
2020-07-12 | 民生视野
-
-
贵州体育局开展2018至2019雪季冰雪
贵州体育局开展2018至2019雪季冰雪场所安全检查贵州省体育局...
2020-07-08 | 民生视野
-
-
包装变脸吓人一跳
包装“变脸” 吓人一跳 马硕 报道现在市面上的饮料是真不少...
2019-07-15 | 民生视野
-
-
钢城区大力宣传双拥政策
钢城区大力宣传双拥政策钢城区注重教育引导,努力做到“四...
2019-07-07 | 民生视野
-
-
市委组织部召开全市非公企业和社会组织党建
市委组织部召开全市非公企业和社会组织党建特派员动员暨培...
2019-07-07 | 民生视野
-
-
营养土不营养黄瓜苗难生长
营养土不营养 黄瓜苗难生长 记者 齐坤 报道 石家庄藁城...
2019-07-06 | 民生视野