3

在 Delphi 中,以下是可能的:

class Alias = Dictionary<long, object>;

别名现在是一个dictionary<long, object>.

这在 C# 中可能吗?我从来没有弄清楚如何不必将字典包装到自定义类中。

using 指令不起作用,因为它在它出现的文件中是本地的。

4

2 回答 2

4

不,这在 C# 中无效。

如果您希望 Alias 成为 Dictionary 您可以像这样继承 Dictionary 类。

public class Alias : Dictionary<long, object>
于 2013-05-14T06:01:59.643 回答
4

不完全是。

但是你可以这样做:

public class Alias : Dictionary<long, object>
{
}

这意味着您可以在需要Aliasa 实例的任何地方使用Dictionary<long, object>。但是你不能在需要Dictionary<long, object>an 的地方使用 a Alias

但是,您可以创建一个隐式运算符来透明地从 a 转换Dictionary<long, object>Alias实例:

public class Alias : Dictionary<long, object>
{
    public Alias() {}
    public Alias(Dictionary<long, object> dictionary)
    {
        foreach(var kvp in dictionary)
            Add(kvp);
    }

    public static implicit operator Alias (Dictionary<long, object> dictionary)
    {
        return new Alias(dictionary);
    }
}

请注意,此隐式转换运算符将创建字典的副本,这可能是意外或不希望的。

于 2013-05-14T06:02:08.960 回答