Рассмотрим следующий код: < /p>
Код: Выделить всё
new Derived("XXX").Test();
public class Base(string name)
{
protected void Log() => Console.WriteLine("Base: " + name);
}
public class Derived(string name) : Base(name)
{
public void Test()
{
base.Log();
Console.WriteLine("Derived: " + name);
}
}
program.cs(8,42): предупреждение CS9107: параметр 'Строительное название' запечатлено в состояние типа оборудования, и его значения также прописано. Значение может быть захвачено и базовым классом. Или есть лучший способ избежать этого? Код написан неправильно? Я не уверен, что вижу альтернативу, кроме того, чтобы отказаться от основных конструкторов и переписать все это, чтобы: < /p>
new Derived("XXX").Test();
public class Base
{
protected readonly string _name;
protected Base(string name)
{
_name = name;
}
protected void Log() => Console.WriteLine("Base: " + _name);
}
public class Derived : Base
{
public Derived(string name) : base(name) { }
public void Test()
{
base.Log();
Console.WriteLine("Derived: " + base._name);
}
}
< /code>
Пожалуйста, сообщите. < /p>
Примечание.>
Подробнее здесь: https://stackoverflow.com/questions/773 ... uctor-para
Мобильная версия