在c#中创建一个没有new关键字的对象

时间:2011-07-30 14:15:21

标签: c#-2.0

  public class Animal
    {

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

动物a =新动物();

在实例化对象时是否真的需要使用新的keyow?

我们可以这样做吗

动物a =动物();

这里的任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

没有。您始终可以使用Activator - Activator.CreateInstance。不确定你是否真的会发现它比新的更简单。

另外,查看您的示例,您可能希望将其设为static,因为您的方法不会对您的类的特定实例执行操作。您可以直接拨打Animal.Eat()

  public static class Animal
  {

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

答案 1 :(得分:1)

要实例化对象是,您始终需要使用new。话虽这么说,如果因为某种原因你不喜欢它,你可以在你的类中创建一个包含new关键字的静态加载方法。这并没有改变你使用new的事实,但它确实隐藏了它。像这样:

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

或者你可以创建一个静态类。

答案 2 :(得分:0)

您可能已经考虑到了C ++,对于实例化具有或不具有new的对象之间存在差异。

这不适用于C#。 “动物”始终是对象的引用。如果C#语法允许写“Animal a = Animal();”,那可能与“Animal a = new Animal();

完全相同