这样的语法在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/

10-09 09:22