猿问

.NET中的“开放通用类型”究竟是什么?

.NET中的“开放通用类型”究竟是什么?

我正在通过Asp.Net MVC课程并了解到,对于一种方法来确定控制器的动作,

  • 它必须没有“开放的通用类型”

我对某些泛型有所了解并在某种程度上使用它们,但是:

  • 什么是.Net中的开放泛型类型

  • 是否存在封闭的泛型类型

  • 开放泛型类型是一个不经常使用的术语。与它混淆使用的是什么?


HUX布斯
浏览 433回答 3
3回答

慕桂英3389331

只是添加:Dictionary<string, T>(或更确切地说Dictionary<string,>)仍然是开放式的。例:void&nbsp;Foo<T>(Dictionary<string,T>&nbsp;dic)&nbsp;{&nbsp;...&nbsp;}

阿晨1998

“开放泛型类型”只是一种尚未指定其类型的泛型类型(例如CargoCrate<T>)。一旦分配了具体类型(例如CargoCrate<Widget>),它就变为“关闭”&nbsp;。例如,假设你有这样的事情:public&nbsp;class&nbsp;Basket<T>&nbsp;{ &nbsp;&nbsp;T[]&nbsp;basketItems;}public&nbsp;class&nbsp;PicnicBlanket<T>&nbsp;{ &nbsp;&nbsp;Basket<T>&nbsp;picnicBasket;&nbsp;&nbsp;&nbsp;//&nbsp;Open&nbsp;type&nbsp;here.&nbsp;We&nbsp;don't&nbsp;know&nbsp;what&nbsp;T&nbsp;is.} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Closed&nbsp;type&nbsp;here:&nbsp;T&nbsp;is&nbsp;Food.public&nbsp;class&nbsp;ParkPicnicBlanket&nbsp;:&nbsp;PicnicBlanket<Food>&nbsp;{}这里picnicBasket的类型是开放的:尚未分配任何内容T。当您使用特定类型创建具体类型的PicnicBlanket时(例如,通过编写)PicnicBlanket<Food> p = new PicnicBlanket<Food>(),我们现在将其称为已关闭。
随时随地看视频慕课网APP
我要回答