这样的语法在C#中意味着什么?
public abstract class HostFactory<TApp> : ServiceHostFactory
where TApp : IFoo
最佳答案
很多人在这里,我想知道这是否是因为“IFoo”而引起的作业,还是您为了简化示例而进行了替换。
-: ServiceHostFactory
,HostFactory继承自ServiceHostFactory。
-HostFactory<TApp>
,HostFactory是通用类型,因为它具有TApp的类型参数。每当有人使用HostFactory类时,他们都可以为TApp指定一种类型,这将导致在代码中TApp出现的任何地方都使用该类型。因此,如果类具有函数TApp GetApp()
且它们为TApp指定<int>
,则GetApp实际上是int GetApp()
-where TApp : IFoo
,TApp必须实现IFoo接口(interface)(也可以是一个类,指示它必须从该类继承,而不必直接继承)。
-abstract
,HostFactory是一个抽象类,意味着其他类可以从其继承,但是没有代码可以实例化HostFactory本身。这就好比我给您提供了一个车架,然后说,法律上不允许您在道路上开车,但也欢迎您自己制造一辆汽车。
-public
HostFactory是公共(public)的,这意味着在声明它的程序集之外的代码中可见。
编辑:有关泛型的更多信息
我将从MSDN的一个非常重要的引用开始:“泛型是C#2.0的最强大功能。”
当您编写可能可以用于多种类型的内容时,将使用泛型。例如,在2.0版中使用泛型之前,我们必须将所有内容都转换为对象,然后才能将其放入集合中,这确实很危险,因为copmpiler无法在以后获取到时验证您是否转换为正确的类型。集合中的一个项目。使用泛型,我们可以执行ArrayList<bool>
来创建bool的ArrayList,现在无需进行强制转换。编译器可以验证我们是否在集合中添加了 bool 值。
例如,在上面的类中,我们可以编写与实现IFoo的事物一起工作的算法,仅知道该对象将能够执行IFoo接口(interface)具有的作用。因此,我可以编写一种在IFoo接口(interface)上调用方法的算法,然后将来实现IFoo接口(interface)的任何人都可以重用我的算法。
关于c# - 这样的语法在C#中意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2642647/