为什么给定200的输出而不是我预期的20000?
请帮我这个!!!
class Program
{
static void Main(string[] args)
{
mukul x = new mukul();
x.b= 200;
Console.WriteLine(Convert.ToString(x.calculate));
Console.ReadLine()
}
}
class mukul
{
public int b;
public int calculate
{
get { return b; }
set { b = value * 100; }
}
}
Run Code Online (Sandbox Code Playgroud)
你x.b直接设置- 你没有使用calculatesetter,所以它不会乘以100.
如果您更改了此行:
x.b = 200;
Run Code Online (Sandbox Code Playgroud)
对此:
x.calculate = 200;
Run Code Online (Sandbox Code Playgroud)
然后它会像你期望的那样行事.
但有几点要做:
b字段是私有的,则无法直接设置它.字段应该几乎总是私有的.你的财产很奇怪.这样的代码非常不寻常:
x.calculate = x.calculate;
Run Code Online (Sandbox Code Playgroud)
实际上有所作为.如果我是你,我会重新考虑你的设计.
如果你正在调用Console.WriteLine,那么处理一个int值已经超载了,即使没有这个值也可以装箱object.因此,您的代码将更简单地编写为:
Console.WriteLine(x.calculate);
Run Code Online (Sandbox Code Playgroud)