代码之家  ›  专栏  ›  技术社区  ›  SKG

如何为C中的类型创建一个较短的名称?

c#
  •  2
  • SKG  · 技术社区  · 15 年前

    这是我的场景。

    public Class A
    {
      public Class B{..}
    .
    .
    }
    

    在我的代码中的很多地方,我必须强制转换为类型B。在我的例子中,限定名A.B的长度非常长。为了提高可读性,我想创建一个保存B类型的类型变量。

    Type btype = typeof(A.B)
    

    我的问题是如何在我的演员阵容中使用这个btype。当我试着做的时候

       var something = (btype) object
    

    我得到编译错误“需要类型或名称空间”。

    4 回复  |  直到 15 年前
        1
  •  14
  •   BFree    15 年前

    您可以使用别名:

    在代码文件的顶部,在using语句中添加以下内容:

    using SomeShorterName = A.B;
    

    然后,在该文件中需要引用a.b的其他地方,您可以使用别名。

        2
  •  2
  •   Mark Ingram    15 年前

    可以使用using指令- http://msdn.microsoft.com/en-us/library/sf0df423.aspx

    在您想要使用的任何文件的顶部使用这个。

    using TypeB = A.B;
    
        3
  •  2
  •   Bob Fincheimer    15 年前

    Type 是保存有关类型信息的变量类型。第一行很好,但我会解释为什么第二行是不可能的。

    这个 var 关键字要求您在编译时知道要存储在其中的变量的类型。也在尝试使用 bytype 作为一个转换运算符是不可能的,因为它只是一个变量。

    您需要使用C语言的整个部分:泛型。这允许使用动态类型。我建议您将类设为通用类,这样您就可以具有编译时遵从性。

    但是,正如有人回答的那样,您可以使用 using 简化决议的声明。我只是在评论你不能使用的事实 Typeof 类型 要执行强制转换的变量/变量。

        4
  •  1
  •   Thomas Weller    15 年前

    您会得到这个错误,因为btype是一个运行时变量,但是编译器需要在casting语句中有一个编译时常量。

    唯一的办法是:

    var something=(a.b)对象

    顺便说一句:如果你必须投很多,这通常是一个强烈的迹象,你应该重新考虑你的设计。

    托马斯