C# C对象(2个数字)执行2次计算
我有几个关于创建object 2值以及如何调用它的问题 正在使用以下命令初始化对象:C# C对象(2个数字)执行2次计算,c#,C#,我有几个关于创建object 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(
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);
//......
现在我想对这个对象做的两件事是求和和和数:
总和:t4=t2.sumt3;这将导致t4:a:3-2+5,b:15-2+17
SumNumber:t1=t3.sum8这将导致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*/
}
好的,构造部分是假设您不想使用C4中的可选参数,则有三个重载:
public Tweetal() : this(0, 0)
{
}
public Tweetal(int a) : this(a, a)
{
}
public Tweetal(int a, int b)
{
this.a = a;
this.b = b;
}
然后,您需要更改Sum方法以返回另一个“Tweetal”:
public Tweetal Sum(Tweetal other)
{
return new Tweetal(a + other.a, b + other.b);
}
就我个人而言,我将其称为加号而不是求和,并且可能会添加一个运算符重载:
public static Tweetal operator +(Tweetal first, Tweetal second)
{
return first.Plus(b);
}
然后你可以写:
t1 = t1 + t2;
但是,您应该在上面的代码中添加对null参数的检查,并可能在适当的情况下抛出ArgumentNullException。好的,构造部分是一个有三个重载的问题,假设您不想使用C4中的可选参数:
public Tweetal() : this(0, 0)
{
}
public Tweetal(int a) : this(a, a)
{
}
public Tweetal(int a, int b)
{
this.a = a;
this.b = b;
}
public TweetalSum(int aValue, int bValue)
{
return new Tweetal(this.a + aValue, this.b + bValue);
}
然后,您需要更改Sum方法以返回另一个“Tweetal”:
public Tweetal Sum(Tweetal other)
{
return new Tweetal(a + other.a, b + other.b);
}
就我个人而言,我将其称为加号而不是求和,并且可能会添加一个运算符重载:
public static Tweetal operator +(Tweetal first, Tweetal second)
{
return first.Plus(b);
}
然后你可以写:
t1 = t1 + t2;
等等。但是,您应该在上述代码中添加空参数检查,并可能在适当的情况下引发ArgumentNullException。首先创建一个初始化a和b成员的构造函数:
public TweetalSum(int aValue, int bValue)
{
return new Tweetal(this.a + aValue, this.b + bValue);
}
public Tweetal(int a, int b)
{
this.a = a;
this.b = b;
}
然后设置A和B访问器,例如:
public int A {
get {return a;}
set {a = value;}
}
public int B {
get {return b;}
set {b = value;}
}
然后让sum方法返回一个新的Tweetal
public Tweetal sum(Tweetal rhs)
{
int a = this.a + rhs.A;
int b = this.b + rhs.B;
return new Tweetal(a, b);
}
最后是你的sumNumber方法
public Tweetal sumNumber(int newVal)
{
int a = newVal + this.a;
int b = newVal + this.b;
return new Tweetal(a,b);
}
首先创建初始化a和b成员的构造函数:
public Tweetal(int a, int b)
{
this.a = a;
this.b = b;
}
然后设置A和B访问器,例如:
public int A {
get {return a;}
set {a = value;}
}
public int B {
get {return b;}
set {b = value;}
}
然后让sum方法返回一个新的Tweetal
public Tweetal sum(Tweetal rhs)
{
int a = this.a + rhs.A;
int b = this.b + rhs.B;
return new Tweetal(a, b);
}
最后是你的sumNumber方法
public Tweetal sumNumber(int newVal)
{
int a = newVal + this.a;
int b = newVal + this.b;
return new Tweetal(a,b);
}
我打算补充一点,他并没有回答我的问题
public Tweetal(Tweetal t)
{
a = t.a;
b = t.b;
}
并警告不要像这样实施iClonable
class Tweetal: ICloneable
{
...
object ICloneable.Clone()
{
return this.Clone();
}
public virtual Tweetal Clone()
{
return (Tweetal) this.MemberwiseClone();
}
}
因为,而不是建议创建方法,因为它的含义比构造函数中的参数更清楚
Copy(Tweetal objectToCopy)
我本来打算这么做的,但考虑到乔恩的答案已经足够好了,而且只是打字太多了。我打算补充一下,说他没有给我答案
public Tweetal(Tweetal t)
{
a = t.a;
b = t.b;
}
并警告不要像这样实施iClonable
class Tweetal: ICloneable
{
...
object ICloneable.Clone()
{
return this.Clone();
}
public virtual Tweetal Clone()
{
return (Tweetal) this.MemberwiseClone();
}
}
因为,而不是建议创建方法,因为它的含义比构造函数中的参数更清楚
Copy(Tweetal objectToCopy)
我本来打算这么做的,但考虑得更好,因为Jon的答案已经足够好了,而且所有这些都需要大量的打字。让我给大家记下“tweetal”是荷兰语表示“pair”。让我给大家记下“tweetal”是荷兰语表示“pair”。请注意,按照惯例,这些方法将以大写字母SumNumber和Sum开头。请注意按照惯例,这些方法将以大写字母sumname和Sum开头。