создать объект без нового ключевого слова в C # - PullRequest
0 голосов
/ 30 июля 2011
  public class Animal
    {

        public void Eat()
        {
            Console.WriteLine("Animal eats for living.");
        }
    }

Animal a = new Animal ();

действительно ли необходимо использовать новый keyowrd при создании объекта?

Можем ли мы сделать это

Животное a = Животное ();

любая помощь здесь будет отличной.

Ответы [ 3 ]

1 голос
/ 30 июля 2011

Для создания экземпляра объекта да вам всегда нужно использовать новый. При этом, если по какой-то причине вам это не нравится, вы можете создать статический метод загрузки в своем классе, содержащий ключевое слово new. Это не меняет того факта, что вы используете новое, но скрывает его. Примерно так:

public class Animal
{
    private Animal(){}
    public static Animal Load()
    {
         return new Animal();
    }
    public void Eat()
    {
        Console.WriteLine("Animal eats for living.");
    }
}

Или вы можете просто создать статический класс.

1 голос
/ 30 июля 2011

Нет.Вы всегда можете использовать Activator - Activator.CreateInstance .Не уверен, что вы действительно найдете это проще, чем новое.

Также, глядя на ваш пример, вы, вероятно, захотите сделать его статическим , так как ваши методы не действуют на конкретный экземпляр вашегоучебный класс.Таким образом, вы можете напрямую позвонить Animal.Eat().

  public static class Animal
  {

        public static void Eat()
        {
            Console.WriteLine("Animal eats for living.");
        }
   }
0 голосов
/ 30 июля 2011

Вы, вероятно, имеете в виду C ++, для которого есть разница между созданием объекта с новым или без него.

Это не относится к C #. «Животное» - это всегда ссылка на объект. Если синтаксис C # позволяет писать «Animal a = Animal ();», это, вероятно, будет означать то же самое, что «Animal a = new Animal ();

...