iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0
自我挑戰組

初心者學C#系列 第 26

Day 26:C#的運算子多載 (。・ω・。)ノ♡

  • 分享至 

  • xImage
  •  

※以下內容皆是新手撰寫,內容可能不完全正確

看原文書困難重重,線上的英文內容也差不多,不過看完了還是很有成就感的(吧)
這個時候就多爬一點外國論壇,多看一些英文閒書,保證英文突飛猛進~

今天要講上一篇有提到但沒講到的東西 – 運算子多載/運算子超載(operator overloading) ,這個英文術語被翻譯成很多不同的東西,不過Microsoft既然翻成運算子多載,那這裡就用運算子多載囉!
C#內建的運算子大部分都能重新定義或使其多載,運算子也能跟自定義的型別一併使用。有多載的運算子用的是operator關鍵字(operator keyword),而運算子後面要跟著要被賦予定義的符號。下面是把波浪符號(~)定義更動的例子:

public static Yee operator~ (Yee x, Yee y) {
Yee z = new Yee();
z.var1 = x.var1 * y.var1;
z.var2 = x.var2 / y.var2;
z.var3 = x.var3 + y.var3;
z.var4 = x.var4 - y.var4;
return z;
}

這樣定義完,後面用到Yee的時候用波浪符號,就會變成自己定義的功能(通常可以return某東西)。
上面講到運算子分可多載(overloadable)和不可多載(non-overloadable)兩種:
可多載:
+、-、!、~、++、--、、/、%、==、!=、<、>、<=、>=
不可多載:
&&、||、+=、-=、
=、/=、%=、=、.、?:、->、new、is、sizeof、typeof

運算子多載感覺要自己多玩一玩,看那些可以那些不行(上面列的只是常用運算子當中的一部分而已,實際上更多)。
下一篇要講的是介面(interfaces),怕爆

參考資料:
(a) Tutorialspoint; C# - Operator Overloading
https://www.tutorialspoint.com/csharp/csharp_operator_overloading.htm
(b) Microsoft; 運算子多載 (C#參考)
https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/operators/operator-overloading


上一篇
Day 25:C#的多型 (‘∀’●)♡
下一篇
Day 27:C#的介面 (◍•ᴗ•◍)❤
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言