在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

A Comparative Overview of C#中文版(3)

A Comparative Overview of C#中文版(3)

更新時(shí)間:2022-05-04 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

10.操作符重載
 利用操作符重載機(jī)制,程序員可以創(chuàng)建讓人感覺自然的好似簡單類型(如int、long等等)的類。C#實(shí)現(xiàn)了一個(gè)C++操作符重載的限制版,它可以使諸如這樣的精辟的例子—復(fù)數(shù)類操作符重載表現(xiàn)良好。
 在C#中,操作符==是對(duì)象類的非虛的(操作符不可以為虛的)方法,它是按引用比較的。當(dāng)你構(gòu)建一個(gè)類時(shí),你可以定義你自己的==操作符。如果你在集合中使用你的類,你應(yīng)該實(shí)現(xiàn)IComparable接口。這個(gè)接口有一個(gè)叫CompareTo(object)方法,如果“this”大于、小于或等于這個(gè)object,它應(yīng)該相應(yīng)返回正數(shù)、負(fù)數(shù)或0。如果你希望用戶能夠用優(yōu)雅的語法使用你的類,你可以選擇定義<、<=、>=、>方法。數(shù)值類型(int、long等等)實(shí)現(xiàn)了IComparable接口。
 下面是一個(gè)如何處理等于和比較操作的簡單例子:
public class Score : IComparable
{
int value;
public Score (int score)
{
value = score;
}
public static bool operator == (Score x, Score y)
{
return x.value == y.value;
}
public static bool operator != (Score x, Score y)
{
return x.value != y.value;
}
public int CompareTo (object o)
{
return value - ((Score)o).value;
}
}
Score a = new Score (5);
Score b = new Score (5);
Object c = a;
Object d = b;
按引用比較a和b:
System.Console.WriteLine ((object)a == (object)b; // 結(jié)果為false
【譯注:上句代碼應(yīng)該為:System.Console.WriteLine ((object)a == (object)b); // 結(jié)果為false】
比較a和b的值:
System.Console.WriteLine (a == b); // 結(jié)果為true
按引用比較c和d:
System.Console.WriteLine (c == d); // 結(jié)果為false
比較c和d的值:
System.Console.WriteLine (((IComparable)c).CompareTo (d) == 0); // 結(jié)果為true
你還可以向Score類添加<、<=、>=、>操作符。C#在編譯期保證邏輯上要成對(duì)出現(xiàn)的操作符(!=和==、>和<、>=和<=)必須一起被定義。
11.多態(tài)
 面向?qū)ο蟮恼Z言使用虛方法表達(dá)多態(tài)。這就意味著派生類可以有和父類具有同樣簽名的方法,并且父類可以調(diào)用派生類的方法【譯注:此處應(yīng)該是對(duì)象(或?qū)ο笠、指向(qū)ο蟮闹羔槪。在Java中,缺省情況下方法就是虛的。在C#中,必須使用virtual關(guān)鍵字才能使方法被父類調(diào)用。
 在C#中,還需要override關(guān)鍵字以指明一個(gè)方法將重載(或?qū)崿F(xiàn)一個(gè)抽象方法)其父類的方法。
Class B//【譯注:應(yīng)為class B】
{
public virtual void foo () {}
}
Class D : B //【譯注:應(yīng)為class D : B】
{
public override void foo () {}
}
試圖重載一個(gè)非虛的方法將會(huì)導(dǎo)致一個(gè)編譯時(shí)錯(cuò)誤,除非對(duì)該方法加上“new”關(guān)鍵字,以指明該方法意欲隱藏父類的方法。
Class N : D //【譯注:應(yīng)為class N : D】
{
public new void foo () {}
}
N n = new N ();
n.foo(); // 調(diào)用N的foo
((D)n).foo(); // 調(diào)用D的foo
((B)n).foo(); // 調(diào)用D的foo
和C++、Java相比,C#的override關(guān)鍵字使得閱讀源代碼時(shí)可以清晰地看出哪些方法是重載的。不過,使用虛方法有利有弊。第一個(gè)有利點(diǎn)是:避免使用虛方法輕微的提高了執(zhí)行速度。第二點(diǎn)是可以清楚地知道哪些方法會(huì)被重載。【譯注:從“不過”至此,這幾句話顯然不合邏輯,但原文就是如此:“However, requiring the use of the virtual method has its pros and cons. The first pro is that is the slightly increased execution speed from avoiding virtual methods. The second pro is to make clear what methods are intended to be overridden.”。我認(rèn)為,若將被我標(biāo)為斜體的method改為keyword的話,邏輯上會(huì)順暢些。這樣,第一句話就可認(rèn)為是和Java比,因其方法缺省是虛的,第二句話主要就是和C++比,原因參見我后面的相關(guān)注釋】。然而,利也可能是弊。和Java中缺省忽略final修飾符【譯注:在Java中可利用final關(guān)鍵字,對(duì)方法上鎖,相當(dāng)于C#/C++中沒有用virtual關(guān)鍵字修飾方法/成員函數(shù)的情況】以及C++中缺省忽略virtual修飾符相比,Java中缺省選項(xiàng)【譯注:即虛的】使得你程序略微損失一些效率,而在C++中,它可能妨礙了擴(kuò)展性,雖然這對(duì)基類的實(shí)現(xiàn)者來說,是不可預(yù)料的。
【譯注:“而在C++中,它可能妨礙了擴(kuò)展性”這句話或許該這么理解:
class ParentCls
{
public:
 virtual void f(); 
};
/////////////////////////////////////////////////////////////////////////////
class ChildCls : public ParentCls
{
public:
 /*virtual*/ void f();/* 此處不標(biāo)明為virtual的也是virtual的,但是GrandChildCls并不知道(假定GrandChildCls看不到ParentCls),它不知道應(yīng)該對(duì)該方法overload(當(dāng)然C++中并overload關(guān)鍵字,它是Object Pascal的,這兒再插一句話,overload和override兩詞翻譯都一直都很混亂,Borland官方中文簡體手冊(cè)上都翻譯成“重載”)還是override,還是不能碰。即它不知道多態(tài)機(jī)制在此是否會(huì)發(fā)生作用。或許你會(huì)說,試試不就知道啦J */
};
class GrandChildCls : public ChildCls
{
public:
 void f();
};

12.接口
 C#中的接口和Java中的接口差不多,但是有更大的彈性。類可以隨意地顯式實(shí)現(xiàn)某個(gè)接口:
public interface ITeller
{
void Next ();
}
public interface IIterator
{
void Next ();
}
public class Clark : ITeller, IIterator
{
void ITeller.Next () {}
void IIterator.Next () {}
}
這給實(shí)現(xiàn)接口的類帶來了兩個(gè)好處。其一,一個(gè)類可以實(shí)現(xiàn)若干接口而不必?fù)?dān)心命名沖突問題。其二,如果某方法對(duì)一般用戶來說沒有用的話,類能夠隱藏該方法。顯式實(shí)現(xiàn)的方法的調(diào)用,需把類【譯注:應(yīng)該是對(duì)象】造型轉(zhuǎn)換為接口:
Clark clark = new Clark();
((ITeller)clark).Next();
13.版本處理
 解決版本問題已成為.NET框架一個(gè)主要考慮。這些考慮的大多數(shù)都體現(xiàn)于組合體中。在C#中,可在同一個(gè)進(jìn)程里運(yùn)行同一個(gè)組合體的不同版本的能力是令人印象深刻的。
 當(dāng)代碼的新版本(尤其是.NET庫)被創(chuàng)建時(shí),C#可以防止軟件失敗。C#語言參考里詳細(xì)地描述了該問題。我用一個(gè)例子簡明扼要地講解如下:
 在Java中,假定我們部署一個(gè)稱為D的類,它是從一個(gè)通過VM發(fā)布的叫B的類派生下來的。類D有一個(gè)叫foo的方法,而它在B發(fā)布時(shí),B還沒有這個(gè)方法。后來,對(duì)類B做了個(gè)升級(jí),現(xiàn)在B包括了一個(gè)叫foo的方法,新的VM現(xiàn)在安裝在使用類D的機(jī)器上了。現(xiàn)在,使用D的軟件可能會(huì)發(fā)生故障了,因?yàn)轭怋的新實(shí)現(xiàn)可能會(huì)導(dǎo)致一個(gè)對(duì)D的虛函數(shù)調(diào)用,這就執(zhí)行了一個(gè)類B始料未及的動(dòng)作!咀g注:因Java中方法缺省是虛的】在C#中,類D的foo方法應(yīng)該聲明為不用override修飾符的(這個(gè)真正表達(dá)了程序員的意愿),因此,運(yùn)行時(shí)知道讓類D的foo方法隱藏類B的foo方法,而不是重載它。
 引用C#參考手冊(cè)的一句有意思的話“C#處理版本問題是通過需要開發(fā)人員明確他們的意圖來實(shí)現(xiàn)的”。盡管使用override是一個(gè)表達(dá)意圖的辦法,但編譯器也能自動(dòng)生成—通過在編譯時(shí)檢查方法是否在執(zhí)行(而不是聲明)一個(gè)重載。這就意味著,你仍然能夠擁有象Java一樣的語言(Java不用virtual和override關(guān)鍵字),并且仍然能夠正確處理版本問題。
 參見字段修飾符部分。
14.參數(shù)修飾符
(1)ref參數(shù)修飾符
 C#(和Java相比)可以讓你按引用傳遞參數(shù)。描述這一點(diǎn)的最明顯的例子是通用交換方法。不象C++,不但是聲明時(shí),調(diào)用時(shí)也要加上ref指示符:【譯注:不要誤會(huì)這句話,C++中當(dāng)然是沒有ref關(guān)鍵字】
public class Test
{
public static void Main ()
{
int a = 1;
int b = 2;
swap (ref a, ref b);
}
public static void swap (ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
}
(2)out參數(shù)修飾符
out關(guān)鍵字是對(duì)ref參數(shù)修飾符的自然補(bǔ)充。Ref修飾符要求參數(shù)在傳入方法之前必須被賦值。而out修飾符則明確當(dāng)方法返回時(shí)需顯式給參數(shù)賦值,。
(3)params參數(shù)修飾符
 params修飾符可被加在方法的最后的參數(shù)上,方法將接受任意數(shù)量的指定類型的參數(shù)【譯注:在一個(gè)方法聲明中,只允許一個(gè)params性質(zhì)的參數(shù)】。例如:
public class Test
{
public static void Main ()
{
Console.WriteLine (add (1, 2, 3, 4).ToString());
}
public static int add (params int[] array)
{
 int sum = 0;
 foreach (int i in array)
 sum += i;
 return sum;
}
}
【作者注:學(xué)習(xí)Java時(shí)一個(gè)非常令人詫異的事是發(fā)現(xiàn)Java不能按引用傳遞參數(shù),盡管不久以后,你很少會(huì)再想要這個(gè)功能,并且寫代碼時(shí)也不需要它了。當(dāng)我第一次閱讀C#規(guī)范的時(shí)候,我常想,“他們干嗎把加上這個(gè)功能,沒有它我也能寫代碼”。經(jīng)過反省以后,我意識(shí)到這其實(shí)并不是說明某些功能是否有用的問題,更多是說明了沒有它你就另需別的

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 在线免费看v片| 日本老熟妇毛茸茸| 永久av免费在线观看| 手机看片福利日韩| 国产淫片免费看| 一本大道熟女人妻中文字幕在线| 国产黄色激情视频| 日韩精品在线中文字幕| 一二三四视频社区在线| 日韩av中文字幕第一页| 欧美一区二区三区爽大粗免费| 欧日韩免费视频| 日韩黄色片视频| 国产精品入口免费软件| 国产美女18xxxx免费视频| 性生活免费在线观看| 韩国一区二区在线播放| 国产成人三级视频| 99久久国产综合精品五月天喷水| 精品久久一二三| 四季av一区二区| 国产精品久久久久久久99| 国产三级中文字幕| 国产成人在线免费看| 香蕉视频网站入口| 男女裸体影院高潮| 无码无遮挡又大又爽又黄的视频| 18禁免费无码无遮挡不卡网站| 久久人妻精品白浆国产| 凹凸国产熟女精品视频| 一级片视频免费观看| 免费看av软件| 久久精品99国产| 国产成人精品视频ⅴa片软件竹菊| 国产欧美精品aaaaaa片| 免费成人午夜视频| 羞羞的视频在线| 加勒比成人在线| 性生活免费在线观看| 波多野结衣xxxx| 欧美视频在线观看视频| 亚洲一区二区三区四区五区xx| 交换做爰国语对白| 少妇性l交大片| av网站大全免费| www.桃色.com| 婷婷丁香激情网| 成熟丰满熟妇高潮xxxxx视频| 黄色小视频免费网站| 日本在线xxx| 中文字幕超清在线免费观看| 欧美牲交a欧美牲交aⅴ免费真 | 内射国产内射夫妻免费频道| 三上悠亚在线一区| 麻豆av免费在线| 黄色一级在线视频| 91动漫在线看| 高清无码一区二区在线观看吞精| 亚洲这里只有精品| 天天干天天干天天干天天干天天干| 国产婷婷一区二区三区| 国产精品久久国产| 日韩黄色片在线| 日韩精品一区二区免费| 久久久久亚洲av无码专区喷水| 妺妺窝人体色www在线观看| 日韩在线综合网| 777久久久精品一区二区三区 | 丰满女人性猛交| 在线观看免费黄色片| 亚洲一区精品视频在线观看| 五月婷婷激情久久| 伊人成人222| 亚洲自拍偷拍一区二区三区| 久久久久久久久久毛片| 伊人五月天婷婷| 免费一级淫片aaa片毛片a级| 日本aa在线观看| 少妇av一区二区三区无码| 欧美日韩在线一| 久草福利视频在线| 日本一本在线视频| 日韩xxxx视频| 欧美 国产 日本| 在线免费视频一区| 国内精品国产三级国产99| 欧美图片激情小说| 日韩一级片播放| 国产高清免费在线| 黄色免费福利视频| 在线免费观看av网| 欧美日韩黄色一级片| 久久久精品麻豆| 丰满人妻一区二区三区53号| 91好吊色国产欧美日韩在线| 中文字幕在线观看第三页| 91香蕉视频免费看| 日本一道本久久| 亚洲一区二区福利视频| 男人插女人视频在线观看| 一级在线免费视频| 日本wwwcom| 91aaa精品| 超碰97人人射妻| 97在线免费视频观看| www.日日操| 六月婷婷在线视频| 永久免费在线看片视频| 国产一级不卡毛片| 日韩a∨精品日韩在线观看| 91高清国产视频| 免费在线观看的av网站| 18视频在线观看娇喘| 天堂av在线网站| 波多野结衣乳巨码无在线| 精品嫩模一区二区三区| 亚洲国产高清av| 天天影视综合色| 欧美二区在线视频| 成人性免费视频| 成人黄色片免费| 久久99国产精品一区| www.偷拍.com| www.色就是色.com| 国产无色aaa| 第一区免费在线观看| 无码日韩人妻精品久久蜜桃| 国产a级片网站| 日韩 欧美 视频| www污在线观看| 极品美女扒开粉嫩小泬| 拔插拔插海外华人免费| 日韩极品视频在线观看| 日本福利视频网站| 国产91沈先生在线播放| 免费在线看黄色片| www精品久久| 日韩欧美亚洲天堂| 成年人免费在线播放| 超碰网在线观看| 污污的网站18| 欧美一级视频在线| 国产免费xxx| 缅甸午夜性猛交xxxx| 一区二区传媒有限公司| 欧美激情精品久久久久久小说| 黄色国产精品视频| 无码少妇一区二区三区芒果| 麻豆三级在线观看| 欧美视频国产视频| 精品视频在线观看一区二区| www.国产在线播放| 男人操女人逼免费视频| jizz大全欧美jizzcom| 999热精品视频| 三上悠亚久久精品| 亚洲这里只有精品| 精品免费久久久久久久| 国产1区2区在线| 精品91一区二区三区| 精品国产av无码一区二区三区| 国产精品后入内射日本在线观看| 国产精品少妇在线视频| 香蕉视频在线网址| 国产成人a亚洲精v品无码| 依人在线免费视频| www..com日韩| www.偷拍.com| 国产一区视频免费观看| 麻豆传媒网站在线观看| 黄色一级大片在线观看| 可以在线看黄的网站| 国产精品涩涩涩视频网站| 黄色网在线视频| 色www免费视频| 成人小视频在线看| 国产午夜精品视频一区二区三区| 五月婷婷深爱五月| jizzjizz国产精品喷水| av中文字幕av| 在线免费黄色网| 色一情一乱一伦一区二区三区日本| 伊人再见免费在线观看高清版| 国产免费又粗又猛又爽| 日韩av一二三四区| 91免费黄视频| 欧美日韩午夜爽爽| 男人天堂成人网| 小说区视频区图片区| 艹b视频在线观看| 在线视频日韩一区| 在线免费视频a| 亚洲精品一二三四五区| 91av资源网| 亚洲国产精品久久久久爰色欲| 国产 欧美 日本| 国产美女主播在线| 欧美午夜小视频| 国产91在线视频观看| 久草资源站在线观看|