2012-07-12 2 views
0

J'ai passé en revue quelques tutoriels sur les propriétés et les variables de classe, et je comprends que si vous définissez une variable de classe (dans l'exemple ci-dessous, barre), vous pouvez alors appeler un type pour transtyper cette variable Je ne l'ai pas fait dans l'exemple ci-dessous, juste pour clarifier). Mais que se passerait-il si vous utilisiez cette même variable de classe, avec un objet déjà stocké pour appeler une méthode? En référence à l'exemple ci-dessous, le "ok" sera-t-il transmis à la méthode, ou est-il simplement ignoré? J'ai essayé d'exécuter ceci bien que ce compilateur et il n'a pas semblé avoir un problème avec lui, mais je ne suis pas sûr que ce soit en train de faire quoi que ce soit avec la barre d'objets. Merci pour l'aide!Clarification sur l'utilisation des variables de classe?

public class Foo 
{ 

    public static void Main() 
    { 
     Foo bar = new Foo(); 
     object ok = "ok"; 
     bar = (Foo)ok; 
     bar.genericMethod(); 
    } 

    public void genericMethod() 
    { 
    } 

} 
+4

Vous avez déjà écrit le code. Pourquoi ne pas essayer de l'exécuter? –

Répondre

5

Non, ce n'est pas le cas. Vous ne savez pas ce que vous entendez par "variable de classe" - ce que vous avez ici est deux variables locales, de types Foo et object. La seconde méthode n'a accès à aucun d'entre eux car ils sont locaux à la première méthode. Si vous souhaitez que la deuxième méthode ait accès, vous devez effectuer l'une des deux opérations suivantes: passer une en tant que paramètre à la seconde méthode (par exemple, void genericMethod(Foo foo)) ou déclarer l'une des variables champ à la place, en dehors des deux méthodes au niveau de la classe.

Votre code compilera, mais échouera lors de l'exécution à la ligne bar = (Foo)ok. Bien qu'en principe, il pourrait être possible de jeter un coup object à un Foo (parce qu'un Fooest unobject), dans la pratique ceobject n'est pas, et le casting échoue.

+0

Ah, ça aide beaucoup à éclaircir les choses, merci! – Ari

Questions connexes