我有几个关于创建对象(2个值)以及如何"调用"它的问题.
使用以下内容初始化对象:
Tweetal t1, t2, t3, t4, t5, t6;
t1 = new Tweetal(); //a: 0 , b = 0
t2 = new Tweetal(-2); //a: -2, b = -2
t3 = new Tweetal(5, 17); //a: 5, b = 17
t4 = new Tweetal(t3); //a:5, b = 17
Console.Write("t1 = " + t1);
Console.Write("\tt2 = " + t2);
Console.Write("\tt3 = " + t3);
Console.Write("\tt4 = " + t4);
Console.WriteLine("\n");
t1 = t1.Som(t2);
t4 = t2.Som(t2);
//......
Run Code Online (Sandbox Code Playgroud)
现在2个事情要与该对象做正在服用的SUM和SUMNumber:总:t4 = t2.sum(t3);(这将导致在T4:一个:3(-2 + 5),B:15(-2 + 17)SumNumber: t1 = t3.sum(8)(这将导致t1:a:13,b:25)
Sum - >参数例如t3,t2等... SumNumber - >参数7,5,...或2个数字(5,7)......
接下来是我的对象代码(在一个单独的类中),但是当我调用例如t2等时,我究竟如何执行简单的和计算...
public class Tweetal: Object
{
private int a;
private int b;
public Tweetal()
{
//???
//Sum(...,...)
}
public Tweetal(int a)
{
//???
//Sum(...,...)
}
public Tweetal(int a, int b)
{
//???
}
public Tweetal(Tweetal //....) // to call upton the object if i request t1, t2, t3,... insteed of a direct number value)
{
// ????
}
public void Sum(int aValue, int bValue)
{
//a = ???
//b = ???
//Sum(...,...)
}
public void SumNumber(int aValue, int bValue)
{
}
public override string ToString()
{
return string.Format("({0}, {1})", a, b);
}/*ToString*/
}
Run Code Online (Sandbox Code Playgroud)
好吧,构造部分是一个有三个重载的问题(假设你不想使用C#4中的可选参数):
public Tweetal() : this(0, 0)
{
}
public Tweetal(int a) : this(a, a)
{
}
public Tweetal(int a, int b)
{
this.a = a;
this.b = b;
}
Run Code Online (Sandbox Code Playgroud)
然后你需要改变你的Sum方法来返回另一个`Tweetal``:
public Tweetal Sum(Tweetal other)
{
return new Tweetal(a + other.a, b + other.b);
}
Run Code Online (Sandbox Code Playgroud)
我个人称之为Plus而不是Sum,并且可能添加运算符重载:
public static Tweetal operator +(Tweetal first, Tweetal second)
{
return first.Plus(b);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以写:
t1 = t1 + t2;
Run Code Online (Sandbox Code Playgroud)
您应该在上面的代码中添加对空参数的检查,但是 - 并且可能ArgumentNullException在适当的地方抛出.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |