tgoop.com/logofalprog/37
Create:
Last Update:
Last Update:
Развлекалочка для программистов
#кодище
Последняя запись на канале заканчивалась тем, что у нас загруз на работе; поэтому я и пропадал так долго. Но вот мы наконец-то залили в последнюю минуту билд, его сейчас показывают всяким разным игрожурам в Сан-Франциско, а я могу вздохнуть свободно и оглядеться по сторонам. Писать обстоятельный пост про какую-нибудь нашу подсистему у меня сейчас нет никаких сил, поэтому развлеку вас пока небольшой приколюхой для программистов.
Думаю, после нормальной сишечки каждого ужасно бесит, что в шарпе нельзя ссылочные типы проверять на null простым условием:
if (refObject)
а приходится писать
if (refObject != null)
Классическое решение — неявный оператор каста в bool. Я вот почти все свои классики наследую от Boolable:
public class Boolable
{
public static implicit operator bool(Boolable ref)
{
return ref != null;
}
}
Догадываетесь, что может пойти не так? А кейс на самом деле достаточно интересный. Вот есть у вас два класса, наследуемых от Boolable: A и B, и вам надо в каком-то месте проверить равенство объектов:
if (foo1.objectA == foo2.objectA)
но вы маленько опечатались и сравнили объекты разных типов:
if (foo1.objectA == foo2.objectB)
Не смотря на то, что мы передаём разные объекты, условие будет всегда срабатывать, если объекты Boolable. Счастливой отладки, как говорится :)
BY Log of Alprog
Share with your friend now:
tgoop.com/logofalprog/37