当类型和变量同名时访问静态成员

我如何告诉编译器“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;

    }

  }


凤凰求蛊
浏览 60回答 1
1回答

慕森王

您可以使用类的完全限定名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类使用另一个名称,例如 egSpecializedThing或将MyClass.Thing字段重命名为 egaThing或myThing。
打开App,查看更多内容
随时随地看视频慕课网APP