C# 4.0 请帮我查一下这个C代码
为什么给定的产量是200而不是我预期的20000 请帮我这个忙C# 4.0 请帮我查一下这个C代码,c#-4.0,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 {
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; }
}
}
您直接设置了
x.b
——您没有使用calculate
setter,因此它不会乘以100
如果您更改了此行:
x.b = 200;
为此:
x.calculate = 200;
然后它就会像你期望的那样
但有几点需要说明:
- 如果您正确地缩进代码,将使其更易于阅读
- 如果
字段是私有字段,则不能直接设置它。字段几乎总是私有的b
- 您应该遵循正常的.NET命名约定(例如,属性和类型的PascalCase)
- 你的财产很奇怪。这样的代码非常罕见:
去真正改变。如果我是你,我会重新考虑你的设计x.calculate = x.calculate;
- 如果您正在调用
,则已经有一个重载来处理Console.WriteLine
值,即使没有,也可以将该值装箱到int
对象。因此,您的代码将更简单地编写为:
Console.WriteLine(x.calculate);
希望你得到答案。祝你有一个愉快的节目 设置x.b会为字段指定一个值。调用x.calculate调用属性上的“get”。“集合”永远不会被调用。使用x.calculate=200。