【问题标题】:Shorthand declaration of long generic collection types长泛型集合类型的简写声明
【发布时间】:2010-09-05 12:24:18
【问题描述】:

我查看了很多示例 C# 泛型代码,并记得看到一个语法声明技巧,它为长泛型字典类型创建了替代速记类型。混合 C# 和 C++ 就像这样:

typedef MyIndex as Dictionary< MyKey, MyClass>;

然后允许以下用法:

class Foo
{
    MyIndex _classCache = new MyIndex();
}

谁能提醒我哪个 C# 语言功能支持这个?

【问题讨论】:

  • 哇,这是我不会做的事情。 C# 没有宏是有原因的。

标签: c# generics collections


【解决方案1】:

就是这个,using directive 的另一种形式,用于定义别名。

using MyClass = System.Collections.Generic.Dictionary<string, int>;

namespace MyClassExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var instanceOfDictionaryStringInt = new MyClass();
        }
    }
}

【讨论】:

  • 谢谢你 Rob 和其他人。下次我在面试时,我会知道它被称为 using 别名。答案现在已融入我的代码中。
  • 忘了说我认为别名(使用)应该在应用程序命名空间区域内声明。
  • 我尝试在命名空间 MyClassExample 中声明它并在另一个执行“使用 MyClassExample”但别名“MyClass”未被识别的文件中使用?
  • @Meryan,别名的处理方式与其他 using 指令相同,并且作用域仅限于它们出现的文件(请参阅:docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
【解决方案2】:

这是一个如何完成的示例

using Test = System.Collections.Generic.Dictionary<int, string>;

namespace TestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Test myDictionary = new Test();
            myDictionary.Add(1, "One");
        }

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多