簡體   English   中英

從其他名稱空間訪問變量

[英]Access variable from other namespaces

我正在嘗試從另一個名稱空間/類設置/讀取類bluRemote中的變量,如下所示:

namespace BluMote
{
    class bluRemote
    {
        public string cableOrSat = "CABLE";
     ........
    }
}

和另一個cs文件(形式):

namespace BluMote
{
    public partial class SettingsForm : Form
    {
        if (BluMote.bluRemote.cableOrSat == "CABLE")
        {
             BluMote.bluRemote.cableOrSat = "SAT";
        }
 .......
    }
}

我知道我做錯了,但是我更習慣在VB中做這樣的事情,所以它就像黑夜一樣:o)

您想要做的是使用靜態變量,因此您需要將類更改為:

namespace BluMote
{
    public static class bluRemote
    {
        public static string cableOrSat = "CABLE";
        ........
    }
}

最好是遠離靜態類(在大多數情況下),而專注於具有bluRemote實例(對象)的面向對象的方法。

因此,與其將bluRemote類設為靜態,不如將其保持不變並執行以下操作:

public partial class SettingsForm : Form
{
    private bluRemote _remote = new bluRemote();  // possibly created somewhere else

    public void SomeFunction() 
    {
        if (_remote.cableOrSat == "CABLE")
        {
             _remote.cableOrSat = "SAT";
        }
    }
    .......
}

您正在嘗試僅通過名訪問實例變量(即,每個對象具有可能不同的值的實例變量)。 這僅適用於靜態變量。

你需要有一個實例 bluRemote要求其價值。 但是,我強烈建議:

  • 您重命名您的類以遵循.NET命名約定
  • 公開變量; 使用屬性

還要注意,這里只有一個名稱空間BluMote 您的兩個類都在該命名空間中聲明。

聲明cableOrSat字段后,需要在bluRemote類的實例上進行設置,但是您嘗試使用類本身的名稱進行設置。

如果將cableOrSat字段聲明為:

public static string cableOrSat = "CABLE";

您將可以通過類名本身訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM