我遇到了问题,我已经向这个社区的周围要求帮助我解决问题。问题是在修改变量后自动更新所有变量。
我有一些使用lambda自动更新变量的技巧b
。
之后,我阅读了一篇有关使用get&set的文章。但是,即使我在下面做这样的事情,变量b
也不会更新。
private static int b;
public int B
{
get { return b; }
set { b = a + 5; }
}
我也找不到使用lambda并设置在一起的方法。以下是我用于测试的代码。
class Class3
{
public class Storage
{
public static int a = 100;
//public static int b => a + 5;
public static int b => a + 5;
public static int c;
}
public static void Main()
{
Methods Test = new Methods();
Console.WriteLine("Original a value: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Console.WriteLine("c value: {0}", Storage.c);
Test.Met1();
Console.WriteLine("After met1: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Console.WriteLine("c value: {0}", Storage.c);
Test.Met2();
Console.WriteLine("After met2: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Console.WriteLine("c value: {0}", Storage.c);
Test.Met3();
Console.WriteLine("After met3: {0}", Storage.a);
Console.WriteLine("b value: {0}", Storage.b);
Console.WriteLine("c value: {0}", Storage.c);
Storage.b += 1;
Console.WriteLine("b value: {0}", Storage.b);
}
public class Methods
{
public void Met1()
{
Storage.a -= 10;
Storage.c = Storage.a;
}
public void Met2()
{
Storage.a -= 10;
Storage.c = Storage.a;
}
public void Met3()
{
Console.WriteLine("{0}", Storage.a);
Storage.c = Storage.a;
Met1();
Met2();
if (Storage.a > 10)
{
Met3();
}
}
}
}
我希望看到的是b
每次a
更改值时都进行更新。另外,代码应允许Storage.b += 1;
a更新b的值。
有办法解决这个问题吗?我真的需要帮助。如果有我可以阅读的链接,请与我分享。谢谢!
编辑-这既可以直接更新B的值,也可以在A值更改时对其进行更新。
我修改了Storage
和Methods
类
public class Storage
{
private int _a;
public int A
{
get { return _a; }
set
{
_a = value;
B = value + 5;
}
}
public int B { get; set; }
public int C { get; set; }
public Storage()
{
A = 100;
}
}
public class Methods
{
private Storage _storage;
public Methods(Storage storage)
{
_storage = storage;
}
public void Met1()
{
_storage.A -= 10;
_storage.C = _storage.A;
}
public void Met2()
{
_storage.A -= 10;
_storage.C = _storage.A;
}
public void Met3()
{
Console.WriteLine("{0}", _storage.A);
_storage.C = _storage.A;
Met1();
Met2();
if (_storage.A > 10)
{
Met3();
}
}
}
内 Main
var storage = new Storage();
Methods Test = new Methods(storage);
Console.WriteLine("Original a value: {0}", storage.A);
Console.WriteLine("b value: {0}", storage.B);
Console.WriteLine("c value: {0}", storage.C);
Test.Met1();
Console.WriteLine("After met1: {0}", storage.A);
Console.WriteLine("b value: {0}", storage.B);
Console.WriteLine("c value: {0}", storage.C);
Test.Met2();
Console.WriteLine("After met2: {0}", storage.A);
Console.WriteLine("b value: {0}", storage.B);
Console.WriteLine("c value: {0}", storage.C);
Test.Met3();
Console.WriteLine("After met3: {0}", storage.A);
Console.WriteLine("b value: {0}", storage.B);
Console.WriteLine("c value: {0}", storage.C);
storage.B += 1;
Console.WriteLine("b value: {0}", storage.B);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句