c# - clicker - apprendre le rapport d'objet à son chien




Différence entre objet a=nouveau Chien() vs Chien a=nouveau Chien() (4)

Ceci est utile lorsque vous souhaitez utiliser le polymorphisme et que vous pouvez utiliser la méthode abstraite implémentée dans Dog. Par conséquent, de cette façon, l’objet est Dog, même si Object. Vous pouvez donc utiliser cette méthode lorsque vous souhaitez utiliser le polymorphisme.

object a = new Dog();

contre

Dog a = new Dog();

Dans les deux cas, un objet a.GetType() donne Dog . Les deux invoquent le même constructeur (avec la même hiérarchie).

Alors pouvez-vous s'il vous plaît me dire la différence entre ces deux déclarations?


Les deux créent un objet Dog. Seule la seconde vous permet d'invoquer directement les méthodes Dog ou de les traiter comme un chien, par exemple si vous devez passer l'objet à une méthode en tant que paramètre de type Dog (ou quelque chose dans la hiérarchie Dog plus spécifique que simplement object ).

object obj = new Dog(); 
// can only see members declared on object
var type = obj.GetType(); // can do this
Console.WriteLine(obj.ToString()); // also this
obj.Bark(); // Error! Bark is not a member of System.Object

Dog dog = new Dog();
// can do all of the methods declared for Object
dog.Bark(); // can finally use the method defined for Dog

Les deux instructions contiennent une déclaration et un appel de constructeur. Les invocations du constructeur sont identiques, donc vous obtenez un Dog dans les deux cas. Les déclarations sont différentes: dans le premier cas, vous déclarez une variable de type object , une super-classe de Dog ; dans le second cas, vous déclarez une variable de type Dog . La différence est que dans le code suivant, vous pouvez appeler des méthodes de Dog sans un cast uniquement lorsque vous déclarez la variable comme Dog ; si vous le déclarez comme object , vous aurez besoin d'une distribution.


Votre première ligne crée une variable de type object .

Le compilateur ne vous laissera pas traiter comme un Dog .





new-operator