草庐IT

泛型库

全部标签

c# - 多态性不适用于 C# 中泛型类的调用

在以下情况下多态性似乎无法正常工作我有以下定义:interfaceBaseInterface{}interfaceNewInterface:BaseInterface{}classNewClass:NewInterface{}classGenericClasswhereT:BaseInterface{publicstringWhoIAm(TanObject){returnTestPolymorphism.CheckInterface(anObject);}}classImplementedClass:GenericClass{}classTestPolymorphism{publics

c# - 如何判断两个泛型类型值是否相等?

更新*非常抱歉...我的示例代码包含一个错误,导致出现了很多我不理解的答案。而不是Console.WriteLine("3.this.Equals"+(go1.Equals(go2)));我想写Console.WriteLine("3.this.Equals"+(go1.Equals(sb2)));我正在尝试弄清楚如何才能成功确定两个泛型类型值是否彼此相等。基于MarkByers在thisquestion上的回答我想我可以使用value.Equals()其中value是泛型类型。我的实际问题出在LinkedList实现中,但可以通过这个更简单的示例来说明问题。classGenericO

c# - 什么是隐式泛型类型参数

所以,我遇到了Servy(https://stackoverflow.com/a/15098242/496680)的回答,他的一些代码是这样做的:publicstaticintBinarySearch(...)对于一个扩展方法,但是他这样调用它:arr.BinarySearch(...)我四处询问,有人提到它是一个隐含的泛型类型参数。我用谷歌搜索了它们,但没有找到关于它们的信息。我了解泛型的工作原理,但我不明白如何/何时使用它们。为什么servy在他的扩展方法中使用它们?是否有更正式的名称可供我搜索? 最佳答案 好吧,您遗漏了使这一

c# - 具有泛型的对象类型中的 "apostrophe + number"是什么意思(例如 "Collection` 1")?

我有一个对象(MyObject)和一个属性(MyProperty)。我想获取它的类型名称(即String或MyClass等)。我使用:PropertyInfopropInfo=typeof(MyObject).GetProperty("MyProperty");Console.WriteLine(propInfo.PropertyType.Name);Console.WriteLine(propInfo.PropertyType.FullName);简单类型没问题,但当MyProperty是通用类型,我在获取它的名称时遇到问题(例如Collection)。它打印:Collection`

c# - 泛型 IAbstract<T> 继承自 IAbstract

我正在努力实现这样的目标:interfaceIAbstract{stringA{get;}objectB{get;}}interfaceIAbstract:IAbstract{TB{get;}}classRealThing:IAbstract{publicstringA{get;privateset;}publicTB{get;privateset;}}所以我可以这样做:RealThingrt=newRealThing();IAbstractia=rt;IAbstractias=rt;objecto=ia.B;strings=ias.B;这可能吗? 最佳答案

c# - 将泛型类型参数转换为 C# 中的特定类型

如果您需要将泛型类型参数转换为特定类型,我们可以将其转换为一个对象并像下面这样进行转换:voidSomeMethod(Tt){SomeClassobj2=(SomeClass)(object)t;}有没有更好的方法来实现这一点,而不是将其强制转换为对象,然后再强制转换为特定类型?问题:我有一个接受泛型类型参数的泛型函数,在基于类型检查的函数内部我做了一些如下操作:voidSomeMethod(Tt){if(typeof(T).Equals(typeof(TypeA))){TypeA=(TypeA)(object)t;//Dosomeoperation}elseif(typeof(T).

c# - 如何将类型为 "Type"的变量传递给泛型参数

我正在尝试这样做:Typetype=Type.GetType(string.Format("Gestor.Data.Entities.{0},Gestor.Data",e.Item.Value));MetaDataUtil.GetColumnasGrid();但它不起作用,你知道我该怎么做吗? 最佳答案 你需要为此使用反射。varmethod=typeof(MetaDataUtil).GetMethod("GetColumnasGrid").MakeGenericMethod(new[]{type}).Invoke(null,nul

c# - 与 IComparable 一起使用的可空泛型类型。可能吗?

我正在尝试创建一个简单的Clamp(以便我可以绑定(bind)任何可比较的值......主要用于数字类型,如int、double等)问题是如果我执行以下操作会出现错误,但是accordingtoMSDNIComparable的CompareTo应该能够处理空值。引述:“根据定义,任何对象比较大于null,并且两个null引用相互比较相等。”publicstaticTClamp(thisTvalue,Tmin,Tmax)whereT:IComparable{if(value.CompareTo(max)>0)returnmax;if(value.CompareTo(min)(0,9999

c# - .Net 在哪里存储泛型类型的静态字段的值?

下面的代码允许我为每种类型存储一个值T:publicstaticclassMyDict{publicstaticTValue;}我可以存储与类型一样多的值,编译器不知道我将使用什么类型。这些静态字段值如何存储以及存储在何处?更新:明明是存储在内存中的,但是我想了解一下这个内存。是堆吗?它是一些特殊的CLR内存吗?怎么称呼?还以这种方式存储了什么?更新2:JITter生成单个实现MyDict对于MyDict的所有引用类型参数.然而,这些值是分开存储的。我想每个类型参数仍然有一些每个类型参数的结构,虽然thwvtable链接到JITtedMyDict,字段是分开的。我说得对吗?

c# - C# 中的泛型继承?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhycannotC#genericsderivefromoneofthegenerictypeparametersliketheycaninC++templates?我可以publicclassMyGenericClass:DL//buticannotdopublicclassMyGenericClass:T我该怎么做第二个?如果我做不到,我该怎么做publicclassMyGenericClass{Tobj;//haveallMyGenericClass.XYZcallobj.XYZ}