我正在学习 C#,我对这三个类(class)进行了练习:
public abstract BaseClass<T> Where T : BaseClass<T>
public class Class1
public class Class2 : BaseClass<Class2>
练习中有这样的内容:
var dictionary = new Dictionary { [class1] = class1, [class2] = class2 };
我认为这里,Dictionary
是 Dictionary<object, object>
的快捷方式;所以我已将此类添加到项目中:
public class Dictionary : Dictionary<object, object>
我的问题是我不确定我是否正确声明了 Dictionary
。现在该练习完美运行,但也许还有另一种选择来声明 Dictionary
。对了,我用过dynamic
而不是object
而且它也有效。
我的问题是:
在练习中,是 Dictionary
自定义类还是 .NET Framework 中的另一个类或者我不知道的其他类?
最佳答案
练习中的语法无效:
var dictionary = new Dictionary {
[class1] = class1
, [class2] = class2
};
这看起来像一个 C# 6 字典初始值设定项,它期望显式指定字典的类型参数:
var dictionary = new Dictionary<object,object> {
[class1] = class1
, [class2] = class2
};
您不需要创建自己的从 Dictionary<TKey,TVal>
派生的类,或使用dynamic
.
注意:使用object
键和值类型都是必需的,因为您的字典示例使用类 Class1
和Class2
作为键和值,而这些类除了 object
之外没有共同的祖先.
编辑:
I can't modify the exercise. So, I need to do something to make it compile
您的解决方案派生 Dictionary
来自Dictionary<object,object>
那么就可以了。您也可以自己写Dictionary
类采用类似字典的初始值设定项,但这将是一个更困难的练习。
关于c# - 没有泛型的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44997346/