当类型和变量具有相同名称时访问静态成员

时间:2019-04-23 12:59:56

标签: c#

如何告诉编译器“ Thing.VariableProperty”中的“ Thing”是类型而不是实例?这样说,我的Thing实例不包含VariableProperty的定义。

还是将类型名用作变量名对我来说是错的吗?

  public interface IThing
  {
    int Variable { get; }
  }

  public class Thing : IThing
  {
    public const string VariableProperty = nameof(Variable);

    public int Variable => 1;
  }


  public class MyClass
  {
    public IThing Thing = new Thing();

    public string GiveMeAString()
    {
      return "Something about " + Thing.VariableProperty;
    }
  }

1 个答案:

答案 0 :(得分:2)

如果Test类的全限定名在命名空间中,则可以使用它,也可以使用global关键字来引用该类:

...
public string GiveMeAString()
{
    return "Something about " + global::Thing.VariableProperty;
    // Or
    // return "Something about " + My.Namespace.Thing.VariableProperty;
}
...

第三种方法是使用using static指令:

using static Thing;

...
public string GiveMeAString()
{
    return "Something about " + VariableProperty;
}
...

但是在这种情况下,我建议为Thing类使用另一个名称,例如SpecializedThing或将MyClass.Thing字段重命名为例如。 aThingmyThing