Цитата
нет ничего плохо в том, чтобы писать качественнее и лучше
Кто бы спорил!
Только писать if(true == true) не значит писать качественней. Более того совершенно нельзя использовать рекомендации C в C#. Почему? Потому что в C нет настоящего булевого типа. Там True это целое значение не равное 0, False - целое значение равное 0. Поэтому там можно "выстрелить себе в ногу" например так:
Код
int i = 0;
if (i = 1)
printf("i == 1");
else
printf("i == 0");
Тут в if перепутан == и = При этом ошибки никакой нет. Оператор присваивания i = 1 возвращает эту самую 1. А 1 трактуется как True. Следовательно выводиться будет всегда "i == 1". Это не то что хотел программист.
Чтобы избежать подобных ошибок и сделали рекомендацию - сравнивать с True, даже если переменная bool.
Ну а теперь перенесите это на шарп.
Да Вам сразу компилятор взвоет на if (i = 1) и не даст "выстрелить себе в ногу".
Ну и нафига рекомендации языка C использовать в C# в таком случае?Добавлено (27 октября 2017, 19:51)
---------------------------------------------
Ну а в Unity вообще свои заморочки. Например для GameObject и MonoBehaviour переопределен оператор ==. Причины можете посмотреть тут: https://blogs.unity3d.com/ru/2014/05/16/custom-operator-should-we-keep-it/
Поэтому такой тип кеширования:
Код
private Transform m_CachedTransform
public Transform transform
{
get
{
if (m_CachedTransform == null)
m_CachedTransform = InternalGetTransform();
return m_CachedTransform;
}
}
(Вместо трансформ можно взять любой компонент) может даже и замедлить работу. Именно из-за == null.
Вывод - нельзя рекомендации одного языка тупо переносить на другие. Нельзя рекомендации одной среды тупо переносить на другие.
Ну а в C# использование if(flag == true) считается моветоном.