C# 实施'-';本班作业

C# 实施'-';本班作业,c#,class,C#,Class,关于这个主题,我有一个新问题 我可以对2个或更多对象执行“+”或其他操作,但我必须如何实现(-object),这意味着(newobject_class()-object)?有两种不同的-运算符-一元求反和二元减法。您可以同时提供: 使用系统; 静态P类 { 静态void Main() { var foo=新foo(42); 控制台写入线(-foo); var bar=新的Foo(8); 控制台写入线(foo-bar); } } 只读结构Foo:IEquatable { 公共int值{get;}

关于这个主题,我有一个新问题


我可以对2个或更多对象执行“+”或其他操作,但我必须如何实现(-object),这意味着(newobject_class()-object)?

有两种不同的
-
运算符-一元求反和二元减法。您可以同时提供:

使用系统;
静态P类
{
静态void Main()
{
var foo=新foo(42);
控制台写入线(-foo);
var bar=新的Foo(8);
控制台写入线(foo-bar);
}
}
只读结构Foo:IEquatable
{
公共int值{get;}
公共Foo(int值)=>value=value;
public override int GetHashCode()=>值;
公共覆盖bool-Equals(object-obj)=>obj是Foo-Foo&&Equals(Foo);
公共bool等于(Foo-other)=>Value==other.Value;
公共重写字符串ToString()=>Value.ToString();
//一元否定
公共静态Foo操作符-(Foo-Foo)=>newfoo(-Foo.Value);
//二进制减法
公共静态Foo操作符-(Foo x,Foo y)=>新Foo(x.Value-y.Value);
}

有两种不同的
-
运算符-一元求反和二元减法。您可以同时提供:

使用系统;
静态P类
{
静态void Main()
{
var foo=新foo(42);
控制台写入线(-foo);
var bar=新的Foo(8);
控制台写入线(foo-bar);
}
}
只读结构Foo:IEquatable
{
公共int值{get;}
公共Foo(int值)=>value=value;
public override int GetHashCode()=>值;
公共覆盖bool-Equals(object-obj)=>obj是Foo-Foo&&Equals(Foo);
公共bool等于(Foo-other)=>Value==other.Value;
公共重写字符串ToString()=>Value.ToString();
//一元否定
公共静态Foo操作符-(Foo-Foo)=>newfoo(-Foo.Value);
//二进制减法
公共静态Foo操作符-(Foo x,Foo y)=>新Foo(x.Value-y.Value);
}

请显示您已经尝试过的内容。我不明白为什么从另一个对象中减去某个对象会有与加法不同的语法。那么你具体有哪些问题?到目前为止你都尝试了什么?您可以为(-)运算符添加自己的重载,与(+)相同,如下所述:是否回答您的问题?
-object
对于任何类型,甚至对于内置类型,都不意味着
新建对象\u class()-object
。顺便说一句,.NET在
System.Numerics
命名空间中已经有Vector2和Vector3类型。即使您需要创建自己的类型,也可以检查
-object
中内置类型
-
的源代码。object是一元运算符,即具有单个参数的运算符,应用于
object
。它并不意味着
newobject\u class()-object
,除非您决定这样编码。那么,您是如何给操作员编码的?请展示您已经尝试过的内容。我不明白为什么从另一个对象中减去某个对象会有与加法不同的语法。那么你具体有哪些问题?到目前为止你都尝试了什么?您可以为(-)运算符添加自己的重载,与(+)相同,如下所述:是否回答您的问题?
-object
对于任何类型,甚至对于内置类型,都不意味着
新建对象\u class()-object
。顺便说一句,.NET在
System.Numerics
命名空间中已经有Vector2和Vector3类型。即使您需要创建自己的类型,也可以检查
-object
中内置类型
-
的源代码。object是一元运算符,即具有单个参数的运算符,应用于
object
。它并不意味着
newobject\u class()-object
,除非您决定这样编码。那么,你是如何给接线员编码的?