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

首頁 > 學院 > 開發設計 > 正文

[視頻]Visual Studio 2005入門之重載方法以及運算符重載

2019-11-18 16:59:59
字體:
來源:轉載
供稿:網友

這一節是我錄制得最郁悶的一節

內容也比較多,而且文件也罕見的超過了4M ,所以下載肯定比較慢,請忍耐下了!!!

上節課我們看了一個對書店管理系統定義的類,如果你象大多數程序員一樣不安分的話,你肯定會想,我們先做了一個定義了默認值的構造函數,后面我們因為要多顯示書,就又改成了需要參數的了。那是否有辦法既可以使用有參數的,又可以用默認的呢?答案是肯定的!沒有!

才怪,沒有的話這節我們講什么啊,暈!事實上我們還可以使用 重載 ,也就是說我們可以定義幾個同名字的函數,只是構造方法不同,那么我們還是在昨天的基礎上改一下看看!

其實呢他不只可以重載構造函數,還可以重載方法,屬性當然是不可以的。。。

下面我們看下重載一個方法

重載構造函數和方法都很簡單(前提是你把前面的課程都聽懂了)

下面我們講一下重載運算符,重構運算符是件比較郁悶的事,希望大家注意下,因為重載的是系統定義好的那些運算符,這樣一來問題就出來了,因為很容易混淆到底這個運算符是做什么的,簡言之,他會讓代碼的易讀性降低,那你可能會問了,既然如此,我們干嗎還學呢?原因很簡單,因為在某些特定的環境下,他能夠讓代碼更加的簡潔,也就是能夠把復雜的問題給簡單化了。

所以記住 只有在運算對類型具有很直觀的意義(例如,支持表示數值的類型的兩個實例相加)的情況下,才應進行運算符重載。不應使用運算符重載為非直觀運算提供語法快捷方式。 否則很難保證三個月后你自己都搞不懂你曾經做了什么。

事實上,我們早就在用運算符重載了,記得前面我們講算術運算符的時候說到加號,它實際上就是這樣的,你看,當遇上數值型的數據,它執行的是算術運算的功能,當遇上字符串型的時候呢,他又執行的是 連接 的功能。

以下幾點轉至MSDN 的,希望大家注意看下


避免定義運算符重載,但在其用法應類似于基元(內置)類型的類型中除外。
考慮在其用法應類似于基元類型的類型中定義運算符重載。
例如,String定義運算符 == 和 !=。

在表示數字的結構(如 System.Decimal)中定義運算符重載。
在定義運算符重載時,不要偏離直觀意義。當重載運算符后運算結果非常直觀的情況下才適于進行運算符重載。例如,用一個 System.DateTime 對象減去另一個 System.DateTime 對象得到一個 System.TimeSpan 對象這一操作有直觀的意義。但是,使用邏輯 union 運算符聯合兩個數據庫查詢或使用 shift 運算符寫入流則不合適。
除非至少有一個操作數屬于定義重載的類型,否則不要提供運算符重載。
C# 編譯器強制執行這一準則。

以對稱方式重載運算符。
例如,如果重載相等運算符,也應重載不等運算符。同樣,如果重載小于運算符,也應重載大于運算符。

考慮為每個重載運算符所對應的方法提供友好的名稱。

但是,并非所有的運算符都可以被重載的,下面我抄了MSDN上的定義,大家看一下


運算符  可重載性 
+、-、!、~、++、--、true 和 false
 可以重載這些一元運算符。
 
+, -, *, /, %, &, |, ^, <<, >>
 可以重載這些二進制運算符。
 
==, !=, <, >, <=, >=
 比較運算符可以重載(但請參見本表后面的說明)。
 
&&, ||
 條件邏輯運算符不能重載,但可使用能夠重載的 & 和 | 進行計算。
 
[]
 不能重載數組索引運算符,但可定義索引器。
 
()
 不能重載轉換運算符,但可定義新的轉換運算符(請參見 explicit 和 implicit)。
 
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=
 賦值運算符不能重載,但 += 可使用 + 計算,等等。
 
=、.、?:、->、new、is、sizeof 和 typeof
 不能重載這些
 


當我們看這個表的時候問題又來了,如果你沒有問題的話,只能說明兩種可能,一是你對這節知識懂了,或者就是你根本就沒認真的看這個表,如果看了,那我請問,什么是一元運算符?答不出來吧,那就接著看下面的

所謂一元運算符,簡單來說,就是指計算的時候只需要一個值就可以了,例如 !IsPostBack

注意:二元運算符中必須有一個或者兩個都是屬于這個類型。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨竹工卡县| 大城县| 南召县| 曲靖市| 射洪县| 雷州市| 比如县| 乐平市| 洛川县| 潼关县| 宣威市| 宝清县| 尉氏县| 临泉县| 疏附县| 中山市| 镇江市| 高陵县| 香港| 墨竹工卡县| 宁化县| 钦州市| 洛川县| 大荔县| 海南省| 高要市| 漳浦县| 论坛| 松桃| 大同县| 湄潭县| 绥宁县| 调兵山市| 武鸣县| 德钦县| 洪泽县| 南召县| 屏山县| 江孜县| 栖霞市| 宜宾市|