从其他名称空间访问变量

时间:2011-08-08 21:20:35

标签: c# variables 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中做这样的事情,所以它像黑夜一样ha:o)

3 个答案:

答案 0 :(得分:2)

您要做的是使用静态变量,因此您需要将类更改为:

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";
        }
    }
    .......
}

答案 1 :(得分:2)

您正在尝试访问实例变量 - 即每个对象具有可能不同的值 - 仅通过 class 名称。这仅适用于静态变量。

您需要bluRemote实例,并询问 的值。但是,我强烈建议:

  • 您将类重命名为遵循.NET命名约定
  • 公开变量;使用属性

另请注意,此处只有一个命名空间 - BluMote。您的两个类都在该命名空间中声明。

答案 2 :(得分:1)

当您声明cableOrSat字段时,您需要在bluRemote类的实例上设置它,但是您尝试使用类本身的名称来设置它。

如果您将cableOrSat字段声明为:

public static string cableOrSat = "CABLE";

您将能够通过类名本身访问它。