/// <summary> /// Точка входа для приложения. /// </summary> /// <param name="cat">Объект IAnimal для проверки класса Cat</param> /// <param name="unknown">Объект IAnimal для проверки работы с Null Object</param> /// <remarks>Переменные созданы для проверки приложения. Заместо того, чтобы использовать Null c#, используем NullObject (в случае этого приложения NullAnimal) /// Использование такого паттерна проектирования не приведет у ошибке System.NullReferenceException, как в случае использования простого с# null</remarks> static void Main() { IAnimal cat = new Cat(); cat.MakeSound(); IAnimal unknown = new NullAnimal(); //<< заменяет: IAnimal unknown = null; unknown.MakeSound(); }
private static void Main34() { IAnimal dog = new Dog(); dog.MakeSound(); // outputs "Woof!" /* Instead of using C# null, use a NullAnimal instance. * This example is simplistic but conveys the idea that if a NullAnimal instance is used then the program * will never experience a .NET System.NullReferenceException at runtime, unlike if C# null was used. */ IAnimal unknown = new NullAnimal(); //<< replaces: IAnimal unknown = null; unknown.MakeSound(); // outputs nothing, but does not throw a runtime exception }
//Null Object public Run NullObject() { Console.WriteLine("\nNull Object:"); Animal dog = new Dog(); dog.MakeSound(); // Animal unknown = new NullAnimal(); //<< замінює: Animal unknown = null; unknown.MakeSound(); // нічого не відбувається return(this); }