日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一个自定义类型的运算符重载的例子

發(fā)布時(shí)間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个自定义类型的运算符重载的例子 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這里只重載了“+”“-”“==”“!=”運(yùn)算符。

代碼??1?using?System;
??2?using?System.Collections.Generic;
??3?using?System.Linq;
??4?using?System.Text;
??5?
??6?namespace?ConsoleDemo.Classes
??7?{
??8?????public?class?Vector
??9?????{
?10?????????public?double?X?{?get;?set;?}
?11?
?12?????????public?double?Y?{?get;?set;?}
?13?
?14?????????public?double?Z?{?get;?set;?}
?15?
?16?????????public?Vector(double?x,?double?y,?double?z)
?17?????????{
?18?????????????this.X?=?x;
?19?????????????this.Y?=?y;
?20?????????????this.Z?=?z;
?21?????????}
?22?
?23?????????public?Vector(Vector?vector)
?24?????????{
?25?????????????this.X?=?vector.X;
?26?????????????this.Y?=?vector.Y;
?27?????????????this.Z?=?vector.Z;
?28?????????}
?29?
?30?????????public?override?string?ToString()
?31?????????{
?32?????????????return?"X?=?"?+?this.X?+?",?Y?=?"?+?this.Y?+?",?Z?=?"?+?this.Z;
?33?????????}
?34?
?35?????????///?<summary>
?36?????????///?重載?ConsoleDemo.Classes.Vector?類型的“+”運(yùn)算符。
?37?????????///?</summary>
?38?????????///?<param?name="lhs">運(yùn)算符左側(cè)實(shí)例</param>
?39?????????///?<param?name="rhs">運(yùn)算符右側(cè)實(shí)例</param>
?40?????????///?<returns></returns>
?41?????????public?static?Vector?operator?+(Vector?lhs,?Vector?rhs)
?42?????????{
?43?????????????Vector?result?=?new?Vector(lhs);
?44?????????????result.X?+=?rhs.X;
?45?????????????result.Y?+=?rhs.Y;
?46?????????????result.Z?+=?rhs.Z;
?47?????????????return?result;
?48?????????}
?49?
?50?????????///?<summary>
?51?????????///?重載?ConsoleDemo.Classes.Vector?類型的“-”運(yùn)算符。
?52?????????///?</summary>
?53?????????///?<param?name="lhs">運(yùn)算符左側(cè)實(shí)例</param>
?54?????????///?<param?name="rhs">運(yùn)算符右側(cè)實(shí)例</param>
?55?????????///?<returns></returns>
?56?????????public?static?Vector?operator?-(Vector?lhs,?Vector?rhs)
?57?????????{
?58?????????????Vector?result?=?new?Vector(lhs);
?59?????????????result.X?-=?rhs.X;
?60?????????????result.Y?-=?rhs.Y;
?61?????????????result.Z?-=?rhs.Z;
?62?????????????return?result;
?63?????????}
?64?
?65?????????//?"*"?"/"?"%"?etc.
?66?
?67?????????///?<summary>
?68?????????///?重載?ConsoleDemo.Classes.Vector?類型的“==”運(yùn)算符
?69?????????///?</summary>
?70?????????///?<param?name="lhs">運(yùn)算符左側(cè)實(shí)例</param>
?71?????????///?<param?name="rhs">運(yùn)算符右側(cè)實(shí)例</param>
?72?????????///?<returns></returns>
?73?????????public?static?bool?operator?==(Vector?lhs,?Vector?rhs)
?74?????????{
?75?????????????if?(lhs.X?==?rhs.X?&&?lhs.Y?==?rhs.Y?&&?lhs.Z?==?rhs.Z)
?76?????????????{
?77?????????????????return?true;
?78?????????????}
?79?
?80?????????????return?false;
?81?????????}
?82?
?83?????????///?<summary>
?84?????????///?重載?ConsoleDemo.Classes.Vector?類型的“!=”運(yùn)算符
?85?????????///?</summary>
?86?????????///?<param?name="lhs">運(yùn)算符左側(cè)實(shí)例</param>
?87?????????///?<param?name="rhs">運(yùn)算符右側(cè)實(shí)例</param>
?88?????????///?<returns></returns>
?89?????????public?static?bool?operator?!=(Vector?lhs,?Vector?rhs)
?90?????????{
?91?????????????return?!(lhs?==?rhs);
?92?????????}
?93?
?94?????????///?<summary>
?95?????????///?重寫?Object.Equals()?方法,判斷?ConsoleDemo.Classes.Vector?類型是否相等
?96?????????///?</summary>
?97?????????///?<param?name="obj"></param>
?98?????????///?<returns></returns>
?99?????????public?override?bool?Equals(object?obj)
100?????????{
101?????????????Vector?tempVector?=?obj?as?Vector;
102?
103?????????????if?(tempVector?==?null)
104?????????????{
105?????????????????return?false;
106?????????????}
107?
108?????????????return?this?==?tempVector;
109?????????}
110?
111?????????///?<summary>
112?????????///?重寫?Object.GetHashCode()?方法,與?Object.GetHashCode()?方法等效
113?????????///?</summary>
114?????????///?<returns></returns>
115?????????public?override?int?GetHashCode()
116?????????{
117?????????????return?base.GetHashCode();
118?????????}
119?
120?????}
121?}
122?

?

需要注意的是在重寫比較運(yùn)算符時(shí):運(yùn)算符總是要成對(duì)出現(xiàn)的;并且在重寫“==”時(shí)也要重寫 Equals() 和 GetHashCode() 方法。

轉(zhuǎn)載于:https://www.cnblogs.com/gexiaoliang/archive/2010/05/22/1741525.html

總結(jié)

以上是生活随笔為你收集整理的一个自定义类型的运算符重载的例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。