Błąd przy metodzie z parametrem ref

0

Witam, czy ktoś mógłby mi wytłumaczyć czemu tak się dzieje?
Napisałem sobie skrawek kodu, który wygląda tak:

class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            bool b = true;
            test.B = true;
            
            test.Test1(ref b);
            test.Test1(ref test.B);
        }        
    }

    public class Test
    {
        public bool B { get; set; }

        public void Test1(ref bool b)
        {
            b = false;
        }
    }

Pierwsze wywołanie metody Test1 przy zwykłej zmiennej działa, natomiast przy drugim wywołaniu podając w parametrze zmienną klasy Test wyskakuje mi błąd

Nie można przekazać właściwości lub indeksatora jako parametru "out" lub "ref"

Ogólnie umiem czytać i rozumiem treść błędu, ale pytanie moje brzmi - mógłby mi ktoś wytłumaczyć dlaczego nie mogę?

2

Bo właściwość to dwie metody get i set, a przekazanie metody przer referencję jest bez sensu.

2

jak bardzo chcesz to sobie mozesz ustawic np tak:

using System;

class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            bool b = true;
            test.B = true;

            test.Test1(val => b = val);
            test.Test1(val => test.B = val);
        }        
    }

    public class Test
    {
        public bool B { get; set; }

        public void Test1(Action<bool> setter)
        {
            setter(false);
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1