国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

SUNWEN教程之----C#進(jìn)階(六)

2019-11-18 19:49:46
字體:
供稿:網(wǎng)友

大家好,我是武漢華師的SUNWEN.現(xiàn)在是五月二號晚上19:27,由于閑著沒事干,所有又寫起來了.昨天照了十幾張相,待會可以去取了,不知照片中的我是不是很帥,呵呵!現(xiàn)在我耳邊正聽著2000歐洲杯的曲子,所以比較激動.唉,身為我們院2000級足球隊(duì)長的我,已經(jīng)很久沒有踢球了!

現(xiàn)在我要說的是C#中的版本處理.其實(shí)這是任何一個(gè)軟件必須要考慮的問題.每個(gè)軟件都不只一個(gè)版本(除了我寫的以外),因此版本處理顯得非常地重要.java很好地處理了這個(gè)問題,而我個(gè)人認(rèn)為C#借鑒了JAVA的處理方法,所以,也做得很好.

在C#中,如果你在聲明一個(gè)方法的時(shí)候用了virtual這個(gè)關(guān)鍵字,那么,在派生類中,你就可以使用override或者new關(guān)鍵字來?xiàng)売盟蚴呛雎运?如果你在父類中用了virtual這個(gè)關(guān)鍵字,而在其派生類中又沒有用override或new關(guān)鍵字,而直接引用一個(gè)同名方法的話,編譯器將會報(bào)錯(cuò),并將以new方式,即忽略派生類中的方法的方式來運(yùn)行.下面的例子可以幫助你來理解:


000: // Versioning/versioning.cs
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() // 系統(tǒng)在這里將會有一個(gè)警告,并且將會隱藏方法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: System.Console.WriteLine(mB.Meth1());
040: System.Console.WriteLine(mB.Meth2());
041: System.Console.WriteLine(mB.Meth3());
042: }
043: }

輸出:

MyDerived-Meth1
MyBase-Meth2
MyBase-Meth3
可以很明顯地看出來,后兩個(gè)new關(guān)鍵字的輸出是父類中的方法的輸出,所以可以看出,new這個(gè)關(guān)鍵字的作用是如果在以前的版本中有這個(gè)方法,就沿用以前的方法,而不用我現(xiàn)在方法內(nèi)容.而virtual的方法的作用正好相反,它的作用是如果在父類中有這樣一個(gè)方法,則用我現(xiàn)在寫的方法內(nèi)容,讓以前的滾蛋!不過,這里用new好象不太好,讓人誤解(糟了,蓋癡又要打我了!&*%$#@).

如果你把第037行去掉,把039-041中的mB全部改為mD,輸出又變?yōu)?

MyDerived-Meth1
MyDerived-Meth2
MyDerived-Meth3

這又說明了什么呢,說明了派生類的對象只有在被父類重塑的時(shí)候,override和new關(guān)鍵字才會生效.呵呵,這樣說的確有點(diǎn)難以理解,大家只有自己動手,才能搞清楚這其中的機(jī)關(guān),所謂"實(shí)踐是檢驗(yàn)C#的唯一標(biāo)準(zhǔn)",哈哈!

在C#中,你可以自由地為在派生類中為加入一個(gè)方法,或者覆蓋父類的方法,如下所示,非常地簡單:

class Base {}
class Derived: Base
{
public void F() {}
}
和:

class Base
{
public void F() {}
}
class Derived: Base
{
public void F() {}
}
好了,這一節(jié)又完了,音樂還沒完,但是我真的要休息了,明天見!

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 年辖:市辖区| 临西县| 孝昌县| 肃宁县| 泊头市| 汝阳县| 宁波市| 吴旗县| 临安市| 正镶白旗| 通许县| 岱山县| 襄城县| 舞阳县| 晋中市| 奎屯市| 新邵县| 卓资县| 桦甸市| 和平区| 环江| 洛宁县| 江陵县| 南投县| 成安县| 富阳市| 黄平县| 大化| 句容市| 灵宝市| 吉林省| 马龙县| 子长县| 恩施市| 田林县| 绍兴县| 金沙县| 邻水| 云龙县| 文安县| 汽车|