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);
}