草庐IT

【JavaSE】初识泛型

全部标签

c# - 在 C# 中将泛型对象添加到泛型列表

我有相关部分看起来像的类classC{voidMethod(SomeClassobj){list.Add(obj);}Listlist=newList();}我应该如何定义列表以便类编译?我想要一个List>类型的列表,这是SomeClass的对象列表每个对象都可以有任何类型参数。Java?构造允许这样做;什么是C#等价物?如果不存在这样的事情,是否有合适的解决方法?(List可以,但非常丑陋。) 最佳答案 我认为您不能在C#中执行此操作...您必须将类型参数添加到类中:classC{voidMethod(SomeClassobj)

c# - 类型 'T' 必须是不可为 null 的值类型才能将其用作泛型类型或方法 'T' 中的参数 'System.Nullable<T>'

为什么我在以下代码中会收到此错误?voidMain(){int?a=1;int?b=AddOne(1);a.Dump();}staticNullableAddOne(Nullablenullable){returnApplyFunction(nullable,(intx)=>x+1);}staticNullableApplyFunction(Nullablenullable,Funcfunction){if(nullable.HasValue){Tunwrapped=nullable.Value;TResultresult=function(unwrapped);returnnewNu

c# - 如何调用基于封闭泛型的方法重载?

假设我有三种方法:voidFoo(MemoryStreamv){Console.WriteLine("MemoryStream");}voidFoo(Streamv){Console.WriteLine("Stream");}voidFoo(objectv){Console.WriteLine("object");}我调用方法Foo传递开放泛型类型的第一个参数:voidBar(){Foo(default(T));//justtoshowthescenario//default(T)ornewT()doesn'tmakeadifference,nullisirrelevanthere}我

C# Generic List of Multiple Types 泛型列表

这是我的问题的抽象和简化:我有一套玩具和这些玩具对应的盒子。我希望用户能够指定盒子可以容纳的最大类型的玩具:publicclassBox{}然后在Box类中我想要一个通用的玩具列表,但是盒子中包含的每个玩具都有一个通用类型:publicclassBox{publicList=newList();publicboolWhatever;[memberfunctions,constructors...][ThememberfunctionswilldependonT]}Toys类将如下所示:publicclassToywhereT:struct//Tisanytype{publicList=

c# - 泛型:强制转换和值类型,为什么这是非法的?

为什么这是编译时错误?publicTCastToCastMe(TSourcei){return(TCastTo)i;}错误:Cannotconverttype'TSource'to'TCastTo'为什么这是一个运行时错误?publicTCastToCastMe(TSourcei){return(TCastTo)(object)i;}inta=4;longb=CastMe(a);//InvalidCastException//thiscontrivedexampleworksintaa=4;intbb=CastMe(aa);//thisalsoworks,theproblemislim

c# - 在 C# 中使用泛型时装箱

我有以下简单的C#代码:privateStackm_stack=newStack();publicvoidAdd(Tobj)whereT:Person{m_stack.Push(obj);}这将产生以下IL代码:.methodpublichidebysiginstancevoidAdd(!!Tobj)cilmanaged{//Codesize20(0x14).maxstack8IL_0000:nopIL_0001:ldarg.0IL_0002:ldfldclass[System]System.Collections.Generic.Stack`1ConsoleApplication1.

C# 泛型 - 如何返回特定类型?

也许我做错了。我有一堆派生自“模型”类的类,这是一个具有大量通用属性和方法的基类。我希望它们都实现一组功能:publicabstractvoidCreate();publicabstractTRead(GuidID);//然后我在像“Appointment”这样的子类中实现它:publicoverrideTRead(GuidID){varappt=db.Appointments.First(a=>a.AppointmentID.Equals(ID));varappointment=newAppointment(){DateEnd=appt.dateEnd.GetValueOrDefau

c# - C# 中的多态性、重载和泛型

classPoly{publicstaticvoidWriteVal(inti){System.Console.Write("{0}\n",i);}publicstaticvoidWriteVal(strings){System.Console.Write("{0}\n",s);}}classGenWriter{publicstaticvoidWrite(Tx){Poly.WriteVal(x);}}为什么在C#中不接受无辜的(对于C++程序员)方法Write?您可以看到编译器尝试将参数类型T与具体重载相匹配before实例化:错误3Thebestoverloadedmethodmat

c# - 泛型类型值和 '==' 关键字的 'default' 运算符的行为是什么?

问题的第1部分:在下面的代码中,为什么value==default可以正常编译,而其他替代方案却不能?boolMyEqual(Tvalue){Tvalue2=default;if(value==value2)//Error:Operator'=='cannotbeappliedtooperandsoftype'T'and'T'returntrue;if(value==default(T))//Error:Operator'=='cannotbeappliedtooperandsoftype'T'and'T'returntrue;if(value==default)//Noerrorre

基于 C# 泛型的对象到对象映射器问题

我的应用程序中需要一个对象到对象映射器。我已经尝试了一些,但一直无法找到适合我需要的东西,所以我正在写我自己的。目前我有如下界面:publicinterfaceIMapper{TMap(Robj);}然后我实现一个AccountMapper,将客户映射到一个帐户:publicclassAccountMapper:IMapper{AccountMap(Customerobj){//mappingcode}}目前为止一切正常,但是我有几个源实体映射到同一个目标实体。例如,我有一个Payment和一个Invoice都映射到BillHistory。为了支持以上内容,我需要制作两个单独的映射器(