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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#学习之向量运算符重载

發布時間:2025/3/15 C# 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#学习之向量运算符重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//未重載運算符+=,但編譯通過;C#不允許重載運算符‘=’,但如果重載‘+’運算符,編譯器會自動使用‘+’運算符的重載來執行‘+=’運算符的操作;
//‘-=’、‘*=’、‘&=’和‘/=’等所有賦值運算都遵循此規則;

1、若重載了‘==’運算符,也必須重載‘!=’;否則會產生編譯器錯誤

運算符重載示例(注意:左右運算符):

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using static System.Console; 7 8 namespace LearnForCSharp 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 int i = 10; 15 WriteLine($"{i}"); 16 int j = (int)(i + 0.8); 17 WriteLine($"{j}"); 18 string iName = nameof(i); 19 Write(iName + ";iName:" + nameof(iName) + "\n"); 20 WriteLine(); 21 22 Vector vector1, vector2, vector3; 23 24 vector1 = new Vector(3, -1, 3); 25 vector2 = new Vector(4, 4, 4); 26 vector3 = vector1 + vector2 * 3; 27 Vector v4 = new Vector(vector3); 28 29 v4 += vector2; 30 //未重載運算符+=,但編譯通過;C#不允許重載運算符‘=’,但如果重載‘+’運算符,編譯器會自動使用‘+’運算符的重載來執行‘+=’運算符的操作; 31 //‘-=’、‘*=’、‘&=’和‘/=’等所有賦值運算都遵循此規則; 32 33 double multip = vector1 * vector3; 34 WriteLine($"{vector3.ToString()}"); 35 WriteLine($"{multip}"); 36 WriteLine($"{v4.ToString()}"); 37 ReadKey(); 38 } 39 } 40 41 struct Vector 42 { 43 public double x, y, z; 44 45 public Vector(double x, double y, double z) 46 { 47 this.x = x; 48 this.y = y; 49 this.z = z; 50 } 51 52 public Vector(Vector rhs) 53 { 54 x = rhs.x; 55 y = rhs.y; 56 z = rhs.z; 57 } 58 59 public override string ToString() 60 { 61 return "(" + x.ToString() + "," + y.ToString() + "," + z.ToString() + ")"; 62 } 63 64 public static Vector operator +(Vector lhs, Vector rhs) 65 { 66 Vector result = new Vector(lhs); 67 68 result.x += rhs.x; 69 result.y += rhs.y; 70 result.z += rhs.z; 71 72 return result; 73 } 74 75 public static Vector operator *(double a, Vector rhs) 76 { 77 Vector result = new Vector(rhs); 78 result.x *= a; 79 result.y *= a; 80 result.z *= a; 81 82 return result; 83 } 84 85 public static Vector operator *( Vector rhs, double a) 86 { 87 return a * rhs; 88 } 89 90 public static double operator *(Vector lhs, Vector rhs) 91 { 92 double result = 0; 93 94 result = lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z; 95 96 return result; 97 } 98 } 99 }

?比較運算符重載"=="和“!=”

1 //若比較倆個對象引用就是比較存儲對象的內存地址,一般很少這樣比較;比較對象的值,并返回布爾結果 2 public static bool operator ==(Vector lhs, Vector rhs) 3 { 4 if (lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z) 5 return true; 6 else 7 return false; 8 } 9 10 public static bool operator !=(Vector lhs, Vector rhs) 11 { 12 return !(lhs == rhs); 13 }

?

轉載于:https://www.cnblogs.com/RedCoffeeGod/p/5678730.html

總結

以上是生活随笔為你收集整理的C#学习之向量运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。