public interface Null
{
}
internal class NullWord : Word, Null
{
}
if(word is Null)
Без комментариев. Красотища! :)
Использованы паттерны: NullObject и Marker Interface
Подробнее: http://agile.rpod.ru/109024.html
суббота, 16 мая 2009 г.
Null Object и синтаксический сахар C#
на 17:58
Подписаться на:
Комментарии к сообщению (Atom)
Добится подобного эффекта можно с помощью extension methods.
ОтветитьУдалитьНапример:
public class Word {}
public static class WordExtension {
public static bool isNull(this Word word) {
return word == null;
}
}
// ... некий код ...
Word word = ...;
if (word.isNull) {
// ... некий код обработки ошибки ...
} else {
// ... некий код нормального выполнения...
}
Второй вариант, который я больше предпочитаю:
class NullWord : Word {
// перегрузка методов, так чтобы они
// ничего не делали, что может повредить
// нормальные объекты, БД или память
}
Bспользование еще проще:
Word word = ...
word.any_method_here();
----
С уважением, Вячеслав.