Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字典中类中的C#泛型_C#_Generics_Dictionary - Fatal编程技术网

字典中类中的C#泛型

字典中类中的C#泛型,c#,generics,dictionary,C#,Generics,Dictionary,我有以下代码: protected Dictionary<string, ObjectAttribute<T>> attributes; 受保护的字典属性; 每次向目录添加新项时,我都应该传递一个泛型类型,但我不想使用object/dynamic,因为它以后可能会导致一些强制转换问题。那么,有可能这样做吗 T不是在类构造函数或其他任何地方定义的,因为我每次添加项时都需要它。如果您的意思是“并且T可以更改每个项”,则否:除非ObjectAttribute也具有非泛型基类

我有以下代码:

protected Dictionary<string, ObjectAttribute<T>> attributes;
受保护的字典属性;
每次向目录添加新项时,我都应该传递一个泛型类型,但我不想使用object/dynamic,因为它以后可能会导致一些强制转换问题。那么,有可能这样做吗

T不是在类构造函数或其他任何地方定义的,因为我每次添加项时都需要它。

如果您的意思是“并且
T
可以更改每个项”,则否:除非
ObjectAttribute
也具有非泛型基类或实现非泛型接口,即

protected Dictionary<string, IObjectAttribute> attributes;
受保护的字典属性;

class ObjectAttribute:IOObjectAttribute{…}
将起作用。

如果您的意思是“并且
T
可以更改每个项目”,则否:除非
ObjectAttribute
还具有非泛型基类或实现非泛型接口,即

protected Dictionary<string, IObjectAttribute> attributes;
受保护的字典属性;

class ObjectAttribute:IOObjectAttribute{…}

将起作用。

'T'必须替换为类名。您可以是特定的,例如字符串、整数…或通用的,即对象,或者在接口之间,或者在所有的、其他的、可能在字典中的、继承自的、类之间。类是泛型的:List是泛型类,它是一个可以是任何类型的类;不能创建列表或任何泛型类型。列表和列表是类型,它们不再是泛型;您可以创建这些。必须用类名替换“T”。您可以是特定的,例如字符串、整数…或通用的,即对象,或者在接口之间,或者在所有的、其他的、可能在字典中的、继承自的、类之间。类是泛型的:List是泛型类,它是一个可以是任何类型的类;不能创建列表或任何泛型类型。列表和列表是类型,它们不再是泛型;您可以创建这些。