我是C#的新手我正在尝试将值传递给方法但是接收0.将实例创建到calc的main方法并在main中调用calc方法。
public void test()
{
var calc = new Calc();
calc.Add(1);
var actual = calc.Value;
}
public class Calc
{
public int Value{
get; set;
}
public void Add(int value)
{
int result = value + value;
}
我正在尝试设置当前值,我该怎么做?
答案 0 :(得分:1)
我建议稍微重构一下,以便变量名称更清晰。您最初的问题是,当您真正想要将其设置为您的财产时,您没有对结果做任何事情。
public class Calc
{
public int CurrentValue { get; set; }
public void Add(int number)
{
this.CurrentValue = this.CurrentValue + number;
}
}
答案 1 :(得分:0)
Add
方法的结果不存储在任何地方,即在方法完成后,释放所有分配的内存。如果您希望保存方法的结果,您应该返回它(这将需要更改您的方法&原型)或将其保存在您的类的成员中并使用适当的属性或getter方法访问它。
你的课应该是这样的:
public class Calc
{
private int result;
public int Value
{
get { return result; }
set { result = value; }
}
public void Add(int value)
{
result = value + value;
}
}
请注意,目前Add
方法只会将已发送参数value
的两倍值的结果保存到班级成员result
答案 2 :(得分:0)
我想你想要更像这样的东西:
public class Calc
{
public int Value{
get; private set;
}
public void Add(int value)
{
this.Value += value;
}
}
注意我已将Value
更改为拥有私有的setter,以便只有Calc
类可以更改其值,而其他对象仍然可以检索其值。
注意Add
函数的更改,我们将传递给函数的value
添加到Value
属性中。在您的情况下,您只需在result
方法的每次调用中创建一个新变量Add
,然后对其执行任何操作。
您可以在行动here
中看到它