C# 使用lambda更改变量值时遇到错误

C# 使用lambda更改变量值时遇到错误,c#,variables,lambda,C#,Variables,Lambda,当一个变量在公式中有另一个变量时,我试图计算这些值。我使用了lambda方法,但是,这种方法有一个限制,我收到了这个错误 错误CS0200属性或索引器'Class3.Storage.b'无法分配给--它是只读的 我尝试过使用get和set方法publicstaticintb{get;set;}=>a+5,但我认为这样做的方法是错误的。有没有一种方法可以使用lambda写入值,或者可能将其与setter合并 我希望看到的是b的值不断地自我更新(因此我使用了lambda方法),以及通过使用Stora

当一个变量在公式中有另一个变量时,我试图计算这些值。我使用了lambda方法,但是,这种方法有一个限制,我收到了这个错误

错误CS0200属性或索引器'Class3.Storage.b'无法分配给--它是只读的

我尝试过使用get和set方法
publicstaticintb{get;set;}=>a+5,但我认为这样做的方法是错误的。有没有一种方法可以使用lambda写入值,或者可能将其与setter合并

我希望看到的是b的值不断地自我更新(因此我使用了lambda方法),以及通过使用
Storage.b++之类的东西编辑b的值的灵活性

谢谢大家!

代码如下所示

class Class3
{
public class Storage
    {
        public static int a = 100;
        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();
            }
        }
    }
}

只读表示您只能读取:D 所以试试这个:

private static int _f = a + 5;
    public static int f
    {
        get { return _f; }
        set { _f = a + 5; }
    }

嗨,Zdenek,谢谢你的帮助。我以前尝试过get和set,但使用此方法不会在
a
的值更改时更改
b
的值。这就是为什么我用lambda。有没有一种方法可以同时使用get、set和lambda?