class Program
{
static void Main(string[] args)
{
var x = new Program();
Console.Write(x.Text);
Console.Write(x.Num);
//Console.Write(x.Num);//line A
}
private string Text_;
public string Text
{
get
{
return Text_ ?? (Text_ = "hello");//line B
}
}
private int? Num_;
public int Num
{
get
{
return (int)(Num_ ?? (Num_ = 42));//line C
}
}
}
Я использую Visual Studio 2010 для получения результатов покрытия кода.Это показывает, что линия B полностью покрыта, а линия C частично покрыта.Я ожидаю, что линия B также частично покрыта, а не полностью покрыта. Почему в результатах покрытия кода строка B полностью покрыта?
Чтобы продемонстрировать, что она работает «правильно» для свойства Num, раскомментируйте строку A и запустите покрытие.Строка C должна отображаться полностью покрытой.
Когда я переписываю код в более подробную форму (см. Ниже), он работает правильно и сообщает, что Text_ частично покрыт.Я предпочитаю использовать первое для его краткости и хотел бы знать, эквивалентны ли эти две формы тоже.Заранее спасибо.
if (Text_ != null)
{
return Text_;
}
else
{
return Text_ = "hello";
}