В C # автоматически реализуемые свойства очень удобны. Однако, хотя они ничего не делают, кроме инкапсуляции своего поля поддержки, они по-прежнему не могут быть переданы как аргументы ref или out. Например:
public int[] arr { get; private set; } /* Our auto-implemented property */
/* ... */
public void method(int N) { /* A non-static method, can write to this.arr */
System.Array.Resize<int>(ref this.arr, N); /* Doesn't work! */
}
В этом конкретном случае мы можем решить проблему с помощью такого хака:
public void method(int N) { /* A non-static method, can write to this.arr */
int[] temp = this.arr;
System.Array.Resize<int>(ref temp, N);
this.arr = temp;
}
Есть ли более элегантный способ использования ссылки на поле поддержки автоматически реализуемого свойства в C #?