2017-06-30 2 views
-1

Je sais qu'il y a une différence entre créer une instance qui utilise le constructeur sans para et créer une instance qui n'utilise pas de constructeur. J'ai appelé mon exemple comme ceci:Comment passer des valeurs à une instance qui est faite sans qu'aucun constructeur ne soit appelé

Animal cat; //Animal is a struc 

Maintenant, si je tente de passer en deux valeurs comme cela, je reçois une erreur:

//cat(1,2); 

Je n'ai pas ce problème si je crée l'instance qui utilise un constructeur . Que devrais-je faire?

+3

Quelle est la définition de la structure 'Animal'? –

+3

"créer une instance qui n'utilise pas de constructeur" Il n'existe pas de concept de ce type. – SLaks

+1

Cela ressemble à une initialisation de style C++, pas C# –

Répondre

1

Si animal est un struct que vous avez dit, vous ne pouvez passer de la valeur lorsque vous définissez vos variables comme

Animal cat=new Animal(1,2) 

si vous l'avez défini sans passer des valeurs, vous ne pouvez le faire comme

cat.x=1 
cat.y=2 
+0

le cat.x = 1; ne fonctionne pas – Brogrammer

+0

x est un membre privé/protégé? – MKR

+0

@ManojKumarRai non ils sont publics – Brogrammer

0

Peut-être que votre intention était initialisation des expressions object initializer ou objet:

public void Foo() 
{ 
    Animal cat = new Animal() { AnimalType = "cat", Sound = "myauuuuuu" }; 
} 


struct Animal 
{ 
    public string AnimalType; 
    public string Sound; 
} 

Il y a des incidents que les initialiseurs d'objet fournissent un moyen très pratique et lisible de créer un objet.