Я пытаюсь вычислить значения, когда одна переменная имеет другую переменную в формуле. Я использовал лямбда-подход, предложенный @ Rain366 , однако у этого подхода есть ограничение, и я получил эту ошибку,
Error CS0200 Property or indexer 'Class3.Storage.b' cannot be assigned to -- it is read only
.
I 'Я пытался использовать подход get и set public static int b { get; set; } => a + 5;
, но я считаю, что метод его применения неправильный. Есть ли способ использовать лямбду для записи значений или, возможно, объединить ее с установщиком?
То, что я хотел бы видеть, это значение b, которое постоянно обновляется (поэтому я использовал лямбда-подход) игибкость редактирования значения b с помощью чего-то вроде Storage.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();
}
}
}
}