【问题标题】:C# keyword similar to "this" but for current class type?C# 关键字类似于“this”但适用于当前类类型?
【发布时间】:2012-12-03 04:40:52
【问题描述】:

是否有 keyword 引用当前类类型,类似于 this 引用当前实例?

我的意图是避免在引用静态成员或枚举时必须键入完整的类名,但我想在它前面加上“this”之类的前缀,以提高可读性,就像我对实例成员所做的那样。原因是一些类名非常大,导致过度包装。

【问题讨论】:

  • 你想完成什么?
  • 您可以在实例中引用静态和枚举类型,而无需使用类名作为前缀——所以我看不到问题所在。您能否发布示例代码?
  • 是的,我知道。我只是希望代码对于 Enums/statics 看起来一致,因为 StyleCop 对实例成员强制执行“this”。
  • 该死的警察......谁来警察?
  • 当然,还有命名空间别名,这在这里并没有真正的帮助。我认为类名没有任何相似之处。 msdn.microsoft.com/en-us/library/c3ay4x3d(v=vs.110).aspx

标签: c# class this instance keyword


【解决方案1】:

我不认为有关键字,但也许一样好:

this.GetType();

GetTypeSystem.Object 实现的少数方法之一。

【讨论】:

  • 当然,这会得到对象的实际运行时类,它可能是代码所在类的子类。这可能是也可能不是 OP 要求的。
  • 我用更多细节更新了我的问题,不幸的是这并没有解决我的问题。
【解决方案2】:

如果您在 using 中包含命名空间,您实际上不会输入完整路径。

你可以给类名加上using的别名,例如:

using ClassA = Really.Deep.Class.In.Namepsace.For.SomePurpose.ClassA;

【讨论】:

  • 问题是类名本身很大。
  • @Kurian 好吧,你可以为任何你想要的别名。你知道:using X = INeedToMakeFunOfTheDeveloperThatNamedThisLongClass.
  • 这非常有用。想想在各个地方引用当前类型或类的 sn-ps。而不是替换每一个出现,一个单一的“使用”就可以了。
【解决方案3】:

typeof(this) 会做你想做的事。

编辑: 我站得更正了。 typeof(this) 不是有效的 C#。 dbaseman 是正确的:this.GetType() 会起作用。

【讨论】:

  • typeof(this) 它应该如何工作?见typeof (C# Reference)
  • @KonstantinVasilcov 你说得对,这行不通。我应该先在 LINQPad 中尝试一下。
  • 您可以在此答案中编辑更多信息吗?这个答案真的没有什么意义了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多