请帮我这个C#代码

use*_*245 -2 c#-4.0

为什么给定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)

Jon*_*eet 9

x.b直接设置- 你没有使用calculatesetter,所以它不会乘以100.

如果您更改了此行:

x.b = 200;
Run Code Online (Sandbox Code Playgroud)

对此:

x.calculate = 200;
Run Code Online (Sandbox Code Playgroud)

然后它会像你期望的那样行事.

但有几点要做:

  • 如果您正确缩进代码,将使其更易于阅读
  • 如果您的b字段是私有的,则无法直接设置它.字段应该几乎总是私有的.
  • 您应该遵循常规的.NET命名约定(例如,属性和类型的PascalCase)
  • 你的财产很奇怪.这样的代码非常不寻常:

    x.calculate = x.calculate;
    
    Run Code Online (Sandbox Code Playgroud)

    实际上有所作为.如果我是你,我会重新考虑你的设计.

  • 如果你正在调用Console.WriteLine,那么处理一个int值已经超载了,即使没有这个值也可以装箱object.因此,您的代码将更简单地编写为:

    Console.WriteLine(x.calculate);
    
    Run Code Online (Sandbox Code Playgroud)