【问题标题】:Static class reference name [duplicate]静态类引用名称 [重复]
【发布时间】:2014-06-24 14:55:41
【问题描述】:

这主要只是一个好奇的问题。我试过“静态类速记”或“静态类昵称”之类的搜索,但没有找到任何东西,这让我相信这是不可能的。

假设有一个名为TransitionalTransactionDeltaTemporaryRecord 的静态类。 C# 中是否有办法在我的代码中创建对所述类的更短名称的引用,以便我可以使用该引用代替该类?伪代码示例如下。

staticref DeltaRecord = System.TransitionalTransactionDeltaTemporaryRecord;

Transaction test = new Transaction();

// Ideally, these two would accomplish the same thing
test.Epsilon = DeltaRecord.ComputeEpsilon(pi);
test.Epsilon = TransitionalTransactionDeltaTemporaryRecord.ComputeEpsilon(pi);

如果可能的话,我希望避免使用过长的标识符。

【问题讨论】:

  • 我不建议使用其他人都推荐的type alias。别名应该是用来区分同名的两种类型,所以解决命名冲突。它不应该用于可读性。事实上,它只会让用户感到困惑——他会认为ShortName 是一个实际的类型,但事实并非如此。此外,别名有点用处,因为它仅对 that 源文件有效。 IMO,它降低了可读性,而不是增加了。
  • 我可以看到@dcastro 的观点,但我不会撒谎,这个名字很长。别名和使用指令的要点之一是缩短代码并使代码更具可读性。
  • @AdmiralAdama 真的,这个名字真的很可怕。但是不应该重命名类型本身吗?我怀疑这个名字需要那么长..
  • 我同意@dcastro,我认为这是 OP 为讨论而发明的一个示例。但是,有时您可能会使用无法控制的代码等。这是一个需要了解的重要功能,但更重要的是要知道如何不滥用它。 强大的力量和所有这些
  • 这确实是一个人为的例子,但我以前遇到过这样的类名,在我无法控制的代码中。

标签: c# static


【解决方案1】:

别名using ShortName = System.TransitionalTransactionDeltaTemporaryRecord; 应该这样做。

【讨论】:

    【解决方案2】:

    通过使用using 语句:

     using shortName = A.B.C.ClassName;
    

    【讨论】:

      【解决方案3】:

      是的,你可以用你的 using 指令来做到这一点。

      using TTDTR = TransitionalTransactionDeltaTemporaryRecord;

      编辑

      如果可以的话,重命名你的班级。使用可读性功能来绕过一个糟糕的名字并不是最好的决定。 Transactional Transaction 有什么意义?有非交易性交易吗?我意识到这可能是您的示例类而不是真实的,但我发现很少有类名如此长以至于需要别名。如果是这样,请注意不要更多地弄乱您的代码,并且非常确定您的别名不会映射到另一个类。

      【讨论】:

      • 无关紧要,因为它实际上只是一个示例,但它是Transitional Transaction 而不是Transactional Transaction,只是为了澄清。无论如何,要点。
      【解决方案4】:

      您可以使用 using 指令(在文件顶部)来做到这一点;例如:

      using Dict = Dictionary<string, List<int>>;
      

      此外,在 C# 6 中,我们将能够使用“静态导入”;

      using System.Console;
      ...
      WriteLine("Text"); //Instead of Console.WriteLine("Text");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-25
        • 2013-08-06
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多