所以这可能听起来像一个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)
所以我的问题是什么是超载(对吧?)假设看起来像?
谢谢,
是的,您可以定义构造函数重载.
public class Ball
{
public string Name { get; private set; }
public int Size { get; private set; }
public Ball(string name, int size)
{
this.Name = name;
this.Size = size;
}
// This is called constructor chaining
public Ball(Ball first, Ball second)
: this(first.Name + "," + second.Name, first.Size + second.Size)
{ }
}
Run Code Online (Sandbox Code Playgroud)
合并两个球:
Ball bigBall = new Ball(oneBall, anotherBall);
Run Code Online (Sandbox Code Playgroud)
请注意,您正在调用构造函数重载,而不是+运算符.
public class Ball
{
public int Size { get; private set; }
public string Name { get; private set; }
public Ball(string name , int size)
{
Name = name;
Size = size;
}
public Ball(Ball firstBall, Ball secondBall)
{
Name = firstBall.Name + ", " + secondBall.Name;
Size = firstBall.Size + secondBall.Size;
}
}
Run Code Online (Sandbox Code Playgroud)
您可能希望重载加法运算符Ball,例如:
public static Ball operator +(Ball left, Ball right)
{
return new Ball(left.Name + right.Name, left.Size + right.Size);
}
Run Code Online (Sandbox Code Playgroud)
虽然制作一个Ball接收2 Balls并添加它们的构造函数可能更具可读性,但如果你真的想写,new Ball(ball1 + ball2)那么运算符重载就可以了.如果您使用构造函数执行此操作,那么您的代码将如下所示:new Ball(ball1, ball2)
| 归档时间: |
|
| 查看次数: |
4491 次 |
| 最近记录: |