C# 如何在c中解决以下方法问题#
我的主要观点是:C# 如何在c中解决以下方法问题#,c#,C#,我的主要观点是: static void Main(string[] args) { Money m1 = new Money(2315.99); Money m2 = new Money(4000, 25); Console.WriteLine(m1); Console.WriteLine(m2); Console.WriteLine(m1.IncrementMoney(m2)); }
static void Main(string[] args)
{
Money m1 = new Money(2315.99);
Money m2 = new Money(4000, 25);
Console.WriteLine(m1);
Console.WriteLine(m2);
Console.WriteLine(m1.IncrementMoney(m2));
}
public void IncrementMoney(Money x)
{
//what do I put in here?
}
所以
货币m1=新货币(2315.99)代码>
应将2315.99转换为“$2315.99”
及
Money m2=新货币(4000,25)代码>
表格“$4000.25”
我在金钱课上做了所有这些,效果很好
现在我要做的是使用
m1.增量货币(m2)代码>
这是我的“金钱”课
阶级金钱
{
//实例变量
私人整数美元;
私人整数;
双倍金额;
公共整数美元
{
获取{返回美元;}
设置
{
如果(值>0)
美元=价值;
}
}
公共整数
{
获取{返回美分;}
设置
{
如果(值>0)
美分=价值;
}
}
公共资金(国际货币基金组织、国际货币基金组织)
{
美元=失业救济金;
仙=Cen;
双美元=换算成双美元(美元);
双美分=换算成两倍(美分);
金额=美元+(美分/100);
}
公帑(上午双程)
{
int dol=转换为32(am);
如果(dol>am)
美元=dol-1;
否则如果(dol
但是我不知道在IncrementMoney
方法中放入什么
请帮忙?
如果不是太麻烦的话,也许可以了解一下它的工作原理?我真的很想知道
对不起,如果我没有提供足够的信息,
如果还需要什么,请告诉我。
谢谢
public void IncrementMoney(Money x)
{
this.Dollars += x.Dollars;
var newCents = this.Cents + x.Cents;
this.Cents = newCents % 100;
this.Dollars += newCents / 100;
}
实际上,我会将函数命名为Add
,因为您将获取当前值并添加提供的值,并且不需要Money修饰符,因为它应该位于Money类中,并获取Money对象
Console.WriteLine(m1.IncrementMoney(m2));
指示IncrementMoney
应返回某些内容,但现在它返回void
所以看起来应该是这样的:
public void IncrementMoney(ClassA x)
{
this.Value += x.Value;
}
然后用以下内容显示:
ClassA m1 = new ClassA(2315.99);
ClassA m2 = new ClassA(4000, 25);
Console.WriteLine(m1);
Console.WriteLine(m2);
m1.IncrementMoney(m2);
Console.WriteLine(m1);
由于IncrementMoney
应该将两个货币值相加,因此您的用法看起来应该是money
类型。这很好,因为扩展方法非常棒。这个网站上一个常见的笑话是,它们是解决一切问题的解决方案
您的代码应类似于:
public static Money IncrementMoney(this Money x, Money y)
{
var totalCents = x.Cents + y.Cents;
var retCents = totalCents / 100;
var retDollars = x.Dollars + y.Dollars + (totalCents % 100)
return new Money(retDollars, retCents);
}
至于快速的解释
通过在第一个参数中添加this
,我们告诉C#我们想要编写一个扩展方法。这将意味着我们正在编写的这个方法将挂起This
参数的类型(在本例中为Money
),并允许我们像在.NET框架中一样使用它。扩展方法必须是静态的,所以不能使用该修饰符。除此之外,您只需编写一个方法来完成您想做的任何事情,就像您通常会做的那样
不过,我建议你给它起个名字,而不是IncrementMoney
。这不是很好的描述AddMoney
会更好
顺便说一下,你也可以调查一下。您可以修改我刚才写的内容,只需使用+
操作符即可完成完全相同的操作,如下所示:
public static Money operator +(Money x, Money y)
{
var totalCents = x.Cents + y.Cents;
var retCents = totalCents / 100;
var retDollars = x.Dollars + y.Dollars + (totalCents % 100)
return new Money(retDollars, retCents);
}
有了这个定义,您可以简单地转到m1+m2
并将它们相加。您可以发布ClassA
的整个定义吗?学习编写代码的一部分是学习编写可读代码ClassA
对于一个类来说不是一个好名字,因为它没有任何意义。IncrementMoney
应该做什么?加一分钱?一美元?你只是想做string.Format(“{0:c}”,someMoneyValue)?@YYY应该把这两个值加在一起谢谢!这正是我需要的!对于一个快速的解释,你的问题真的很容易理解。@SeanS请务必接受答案(单击复选标记),这样其他任何人看到这个问题都会得到与你相同的好处!
public static Money operator +(Money x, Money y)
{
var totalCents = x.Cents + y.Cents;
var retCents = totalCents / 100;
var retDollars = x.Dollars + y.Dollars + (totalCents % 100)
return new Money(retDollars, retCents);
}