Я бы сказал нет. Но это зависит от того факта, что мы действительно говорим о поле , а не о свойстве , которое может (хотя определенно не должно) демонстрировать разные поведение в двух включенных вами фрагментах (т. е. если в геттере есть логика с побочными эффектами).
Обновление : Если вы говорите о снижении производительности, разницы практически нет - , но Я считаю, что назначение намного дешевле (чем чтение значения) , Вот пример программы, чтобы продемонстрировать это:
bool b = false;
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < int.MaxValue; ++i)
{
b = true;
}
sw.Stop();
TimeSpan setNoCheckTime = sw.Elapsed;
sw = Stopwatch.StartNew();
for (int i = 0; i < int.MaxValue; ++i)
{
// This part will never assign, as b will always be true.
if (!b)
{
b = true;
}
}
sw.Stop();
TimeSpan checkSetTime = sw.Elapsed;
Console.WriteLine("Assignment: {0} ms", setNoCheckTime.TotalMilliseconds);
Console.WriteLine("Read: {0} ms", checkSetTime.TotalMilliseconds);
Вывод на мою машину:
Assignment: 2749.6285 ms
Read: 4543.0343 ms