2017-07-11 69 views
1

我有這樣的代碼在一個文件中:如何在兩個文件中的兩個部分類之間共享一個變量?

namespace Japanese 
{ 
    public partial class PhrasesPage : ContentPage 
    { 
     PhrasesFrame phrasesFrame = new PhrasesFrame(); 

這個代碼在另一個文件:

namespace Japanese.Views.Phrases 
{ 
    public partial class PhrasesPage 
    { 
     public void setTimeInterval() 
     { 

     phrasesFrame // can't access 

我希望能夠在第二個文件訪問phrasesFrame但似乎不可能的。任何人都可以給我建議我可以做什麼,所以我可以在另一個也是分類的文件中訪問它。還有一個問題。我應該從ContentPage繼承所有文件中的部分類還是隻有一個文件?

+2

你問爲什麼兩個不相關的類('Japanese.PhrasesPage'和'Japanese.Views.Phrases.PhrasesPage')無法訪問的私有字段:你應該按如下方式使用公共的命名空間對他們倆的彼此? –

+2

兩個'PhrasesPage'都存在於不同的命名空間中,因此它們無法在單個類中編譯。 –

回答

4

你可以很容易地訪問它內部的部分類的所有成員,甚至是私有的。

public partial class Test 
{ 
    private int x = 5; 
} 

public partial class Test 
{ 
    public void Run() 
    { 
     Console.WriteLine(x); // outputs 5 
    } 
} 

但是,您使用不正確。由於您的類可以分爲兩種不同的命名空間,編譯器會將它們視爲兩個不同的類:

Japanese.PhrasesPage 
Japanese.Views.Phrases.PhrasesPage 

如果你想讓它像一個部分類工作,你需要將它們放入一個單一命名空間:

// 1 
namespace Japanese.Views.Phrases 
{ 
    public partial class PhrasesPage : ContentPage 
    { 
     PhrasesFrame phrasesFrame = new PhrasesFrame(); 

// 2 
namespace Japanese.Views.Phrases 
{ 
    public partial class PhrasesPage 
    { 
     public void setTimeInterval() 
     { 
      phrasesFrame // CAN access 

但是,請對這些類的責任進行一些分析。
既然你把它們放到不同的命名空間並從不同的類繼承,那麼它們可能有不同的含義,需要通過設計將它們分離出來?

您總是可以使類與組合或聚合相互關聯,而不是使其成爲部分。部分類不是很方便,通常用於代碼生成場景。

對我來說,setTimeInterval聽起來好像與「短語」和「頁面」無關。

+0

非常感謝您的回答。我現在會接受它。 – Alan2

3

由於名稱空間不同,這些被視爲兩個不同的類。

namespace Japanese 
{ 
    public partial class PhrasesPage : ContentPage 
    { 
    PhrasesFrame phrasesFrame = new PhrasesFrame(); 
    //... 
    } 
} 

namespace Japanese 
{ 
    public partial class PhrasesPage 
    { 
    public void setTimeInterval() 
    { 
     phrasesFrame // accessible! :) 
    } 
    } 
} 
相關問題