相关疑难解决方法(0)

怎样才能解释+ =和 - =运算符?

正是(引擎盖下)做了什么+=-=运营商呢?

或者它们是隐含的,因为它们是按类型定义的?

我已广泛使用它们,这是语法的一个非常简单的特性,但我从未想过它的工作原理的深度.

关于这个问题带来了什么

我可以像这样连接一个字符串值:

var myString = "hello ";
myString += "world";
Run Code Online (Sandbox Code Playgroud)

一切都很好.但为什么这不适用于收藏?

var myCol = new List<string>();
myCol += "hi";
Run Code Online (Sandbox Code Playgroud)

你可能会说'你正试图附加一个不同的类型,你不能将一个字符串附加到一个非字符串的类型'.但以下情况也不起作用:

var myCol = new List<string>();
myCol += new List<string>() { "hi" };
Run Code Online (Sandbox Code Playgroud)

好吧,也许它不适用于集合,但以下不是一种(某种)事件处理程序集合?

myButton.Click += myButton_Click;
Run Code Online (Sandbox Code Playgroud)

我显然缺乏对这些运算符如何工作的深入理解.

请注意:myCol在实际项目中,我不是试图以这种方式构建集合.我只是对这个运营商的运作感到好奇,这是假设的.

c# operators

42
推荐指数
3
解决办法
6044
查看次数

C#一起加入2个或更多课程?

所以这可能听起来像一个n00b问题,但我想把2个类合并在一起.

像这样:

Ball oneBall = new Ball("red", 20);
Ball anotherBall = new Ball("blue",40);


Ball BigBall = new Ball(oneBall + anotherBall);

BigBall.size() //should say 60 right? 
Run Code Online (Sandbox Code Playgroud)

我知道你会有这样的事情

class Ball{


  public Ball(string Name , int size){}

// But to merge to of them? 

  public Ball(Ball firstBall, Ball secondBall){} //I know the arguments have to be added
{}


} 
Run Code Online (Sandbox Code Playgroud)

所以我的问题是什么是超载(对吧?)假设看起来像?

谢谢,

c#

5
推荐指数
3
解决办法
4491
查看次数

C#运算符重载是否像C ++一样支持“ + =”?

我来自C ++,使用C#作为新手,只是尝试了一下:

class Class1
{
    int mI = 0;
    string mS = "ab";

    public static Class1 operator + (Class1 obj1, Class1 obj2)
    {
        return new Class1()
        {
            mI = obj1.mI + obj2.mI,
            mS = obj1.mS + obj2.mS
        };
    }

    public static void operator += (Class1 obj1)
    {
        mI += obj1.mI;
        mS += obj1.mS;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现该operator+=函数无法编译,并说:

错误CS1019:应重载一元运算符。

那么C#根本不执行这种运算符重载吗?

c# c++ overloading operator-keyword

3
推荐指数
1
解决办法
107
查看次数

为什么我不能在C#中重载+ =运算符?但我仍然可以使用它?

可能重复:
在C#中重载复合赋值运算符的简单方法?

我正在玩事件,思想事件很奇怪.为什么我不能在泛型类中实现它们.所以我试着发现我不能超载+ =.从这里找到的语言规范

The overloadable unary operators are:    
+   -   !   ~   ++   --   true   false

The overloadable binary operators are:    
+   -   *   /   %   &   |   ^   <<   >>   ==   !=   >   <   >=   <=
Run Code Online (Sandbox Code Playgroud)

+ =未列出.现在,在你说没有理由重载之前+ =我想提出事实C#有使用+ =运算符的事件以及我试图实现一个有趣的事件并希望使用+ =运算符的事实.现在,我有一种感觉,有人会说这就是为什么事件存在,因为这是唯一的原因.但是我想提出你可以使用+ =与TimeSpan结构.去试试吧,var ts= new TimeSpan(); ts += ts;将编译并运行.

我查看了TimeSpan的定义,我不知道它是如何允许的.我看到了一个public static TimeSpan operator +(TimeSpan t);看起来很可疑的东西,但后来我意识到它var name = +ts;就像你怎么能做到var name = -ts;否定一样.

所以我的问题是,我如何使用+ =作为我的结构或类.它似乎得到支持我似乎无法找到它的文档.

.net c# operator-overloading

2
推荐指数
1
解决办法
1436
查看次数