感谢您过去帮助解决多个编码问题,但我偶然发现了另一个问题。我真的需要一些指导。
在下面的脚本中,我试图在b
函数中调用met1, met2 and met3
时更改Main
的值。
class Class3
{
public class Storage
{
public static int a = 100;
public static int b = a + 5;
}
public static void Main()
{
Methods Test = new Methods();
Console.WriteLine("Original a value: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Test.Met1();
Console.WriteLine("After met1: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Test.Met2();
Console.WriteLine("After met2: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Test.Met3();
Console.WriteLine("After met3: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
}
public class Methods
{
public void Met1()
{
Storage.a -= 10;
}
public void Met2()
{
Storage.a -= 10;
}
public void Met3()
{
Console.WriteLine("{0}", Storage.a);
Met1();
Met2();
if (Storage.a > 10)
{
Met3();
}
}
}
}
根据我上面的代码,即使b
的值发生变化,a
的值仍保持在105。据我所知,没有再次调用变量b
来更改其值。
是否应该将变量b用作方法并调用它?这只是我做的一个示例,每当公式中的一个变量发生更改时,我就有50多个需要更改的公式。我认为创建50个以上的方法不是一个好主意,因为应该有更好的编码方法。
谢谢!
答案 0 :(得分:3)
字段不会自动更改。这意味着b = a + 5
会将b
设置为105。要每次重新计算b
的值,可以将其更改为以下属性:
public static int b => a + 5;
这样,每次您访问b
时,它都会计算a + 5
。