永发信息网

C#运算符重载

答案:2  悬赏:60  手机版
解决时间 2021-11-23 08:34
C#运算符重载
最佳答案
如你现在创建了一个自定义类叫 苹果,正常情况下,如果你定义二个变量 苹果A和苹果B实例化它们,然后你想知道 苹果A-苹果B 能得到什么,默认这二个变量是不能直接运算的,如果你要实现 苹果 类的 "-" 运算,那么你必须重载它的 运算符"-",然后自己在里面实现你的操作。 比如 你可以实现说两个不同的菜果相减返回一个烂苹果或返回null

public class Apple{
    public decimal Weight{get;set;}
    public static decimal operator +(Apple a1, Apple a2)
   {
         return a1.Weight-a2.Weight;
   }
}

Apple a=new Apple{Weight=200};
Apple b=new Apple{Weight=300};

Console.Write(b-a);也是网上找的,不过感觉还是比较好理解的

全部回答
一个平面向量的定义例子,其中向量的加减乘(分量相乘)除(分量相除)用到了操作符重载的技巧。
其实操作符重载就是实现一个该类型的静态函数,并通过操作符来通知编译器来调用对应的函数功能。通常需要为这个函数指定一个返回值和若干个参数,对于形如“a+b”的双目运算,指定两个传入参数即可。

public struct Vector2
{
public float X, Y;
public float Length
{
get { return (float)Math.Sqrt(X * X + Y * Y); }
set { this = this * value; }
}
public Vector2 Normalized { get { return this / Length; } }
public Vector2(float x, float y)
{
this.X = x; this.Y = y;
}
public Vector2(Vector3 v)
{
this.X = v.X; this.Y = v.Y;
}

public static Vector2 operator -(Vector2 a)
{
return new Vector2(-a.X, -a.Y);
}
public static Vector2 operator +(Vector2 a, Vector2 b)
{
return new Vector2(a.X + b.X, a.Y + b.Y);
}
public static Vector2 operator -(Vector2 a, Vector2 b)
{
return new Vector2(a.X - b.X, a.Y - b.Y);
}
public static Vector2 operator *(Vector2 a, Vector2 b)
{
return new Vector2(a.X * b.X, a.Y * b.Y);
}
public static Vector2 operator *(Vector2 a, float b)
{
return new Vector2(a.X * b, a.Y * b);
}
public static Vector2 operator *(float a, Vector2 b)
{
return new Vector2(a * b.X, a * b.Y);
}
public static Vector2 operator /(Vector2 a, Vector2 b)
{
return new Vector2(a.X / b.X, a.Y / b.Y);
}
public static Vector2 operator /(Vector2 a, float b)
{
return new Vector2(a.X / b, a.Y / b);
}

public static float Cross(Vector2 a, Vector2 b)
{
return a.X * b.Y - a.Y * b.X;
}
public static float Dot(Vector2 a, Vector2 b)
{
return a.X * b.X + a.Y * b.Y;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我常年被邻居性侵,霸占,谁帮我
vf已经建立的数据库,改名以后,使用里面的表
梦见死去的火計在帮找
90平米装修多少钱17万
纹眉万能粉怎么用
为什么利益即使谈判的目的又是谈判的手段
金源居招待所地址在哪,我要去那里办事,
黄油放在打的面粉怎会起精
六祖慧能 为什么没被火烧
十二星座中谁最容易给人骗
如何制做涮羊肉的海鲜小料
工作总结
请教高人!!考试题目啊!!P{x=n}=c/n n
什么什么浪漫成语
夫妻共同财产我把自己的一份赠送女儿可以吗,
推荐资讯
(4/1一8/5十6/5)x25/4
那里有BT种子?
大庆枢纽站到新村9区
南长街上的一格书院是做什么的呀?经过门前好
上海购买正岩肉桂
北京北京隆福寺那块还有小吃街或小吃店吗
牛肉哪个部位适合炖
现在ipodtouch2系统版本太低,什么应用软件都
菜人的相关故事
迪迦奥特曼中,大古儿子变为迪迦的是哪部电影
图中的正弦值和余弦值的比较大小(有写余弦值
求指教14英寸笔记本小吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?