2011-07-30 4 views
0
public class Animal 
    { 

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

Animal a = new Animal();cで新しい新しいキーワードを使用してオブジェクトを作成します。

オブジェクトをインスタンス化するときに新しいkeyowrdを使用することは本当に必要ですか?

は、我々はこの

動物A =アニマル()のように行うことができます。

ここのヘルプは素晴らしいでしょう。

+0

この質問はすべてのプログラミング言語が多かれ少なかれ厳密な文法と "new"は、型の新しいインスタンスを返す型のコンストラクタメソッドを呼び出すキーワードです。あなたがやっていることは、存在するスコープ内でAnimalメソッドを呼び出すことです。 – flq

答えて

1

No. Activator - Activator.CreateInstanceはいつでも使用できます。あなたが実際にそれが新しいよりも簡単だと分かっているかどうかはわかりません。

また、あなたの例を見ると、あなたのメソッドがあなたのクラスの特定のインスタンスに対して動作していないので、おそらくstaticにしたいと思うでしょう。あなたはAnimal.Eat()に直接電話することができます。

public static class Animal 
    { 

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

私は問題を解決する。 – happysmile

1

オブジェクトをインスタンス化するには、常にnewを使用する必要があります。つまり、ある種の理由であなたが好きでない場合は、新しいキーワードを含む静的なロードメソッドをクラスに作成することができます。これは、あなたが新しいものを使っているという事実を変えないが、それを隠している。このようなもの:

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

また、静的なクラスを作成することもできます。

+0

ちょうど好奇心から、 "新しい"を使用することへのあなたの嫌悪感は何ですか? – Paul

0

あなたはおそらくC++を念頭に置いています。そのため、オブジェクトのインスタンス化と新規インスタンス化の違いがあります。

これはC#では該当しません。 「動物」は常にオブジェクトへの参照です。 C#構文で "Animal a = Animal();"と書かれていると、 "Animal a = new Animal();と同じ意味になります。

関連する問題