2012-07-12 45 views
0

我一直在瀏覽一些關於屬性和類變量的教程,我明白如果你設置了一個類變量(在下面的例子中,bar),那麼你可以調用一個類型來將這個對象轉換爲一個特定的變量我沒有在下面的例子中這樣做,只是爲了澄清)。但是如果你使用了這個相同的類變量,並且已經存儲了一個對象來調用一個方法,會發生什麼?參照下面的例子,「ok」會傳遞給方法,還是被忽略?我試着運行這個雖然這個編譯器,它似乎沒有問題,但我不知道它是否實際上做任何與對象欄設置爲。謝謝您的幫助!說明使用類變量?

public class Foo 
{ 

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

    public void genericMethod() 
    { 
    } 

} 
+4

您已經編寫了代碼。爲什麼不嘗試運行它? – 2012-07-12 15:50:07

回答

5

不,不是。不知道你的意思是「類變量」 - 你在這裏有兩個局部變量,類型Fooobject。第二種方法不能訪問它們,因爲它們是第一種方法的本地方法。如果您希望第二種方法有權訪問,則必須執行以下兩項操作之一:將一個參數作爲參數傳遞給第二種方法(例如,將其定義爲void genericMethod(Foo foo)),或將其中一個變量聲明爲取而代之的是在課程級別的兩種方法之外的字段

您的代碼將被編譯,但在運行時會在線路bar = (Foo)ok處失敗。雖然在原則上有可能投的objectFoo(因爲Fooobject),在實踐中object沒有了,轉換失敗。

+0

啊,這有助於清理很多東西,謝謝! – Ari 2012-07-12 15:54:21