草庐IT

泛型约束

全部标签

c# - 在单个 C# 泛型方法中返回 nullable 和 null?

是否可以在C#泛型方法中返回对象类型或Nullable类型?例如,如果我有一个List的安全索引访问器我想返回一个值,以后可以用==null检查或.HasValue().我目前有以下两种方法:staticT?SafeGet(Listlist,intindex)whereT:struct{if(list==null||index=list.Count){returnnull;}returnlist[index];}staticTSafeGetObj(Listlist,intindex)whereT:class{if(list==null||index=list.Count){return

c# - 泛型/JSON JavaScriptSerializer C#

我正在使用VS2008Express在NET3.5SP1中构建一个winForms应用程序。我正在尝试使用System.Web.Script.Serialization库反序列化一个对象。错误是:数组的反序列化不支持类型“jsonWinForm.Category”。干杯!usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Window

c# - 是否可以创建接受(可空)值类型和引用类型的 C# 泛型方法?

我想创建一个接受值类型和引用类型参数的简单方法,即int是值,string是引用。所以这就是我的开始:publicboolAreBothNotNull(T?p1,T?p2){return(p1.HasValue&&p2.HasValue);}所以我希望能够像这样使用它:varr1=AreBothNotNull(3,4);//willbetruevarr2=AreBothNotNull(3,null);//willbefalsevarr3=AreBothNotNull("three","four");//willbetruevarr4=AreBothNotNull(null,"four"

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

我正在使用.netframework4.5我得到以下错误ErrorCS0453Thetype'MyObject'mustbeanon-nullablevaluetypeinordertouseitasparameter'T'inthegenerictypeormethod'Nullable'publicasyncTask>MyMethod(stringmyParamter){}我也试过publicasyncTaskMyMethod(stringmyParamter){}如果我将事物设置为可为空,那么为什么我会在方法名称下方看到一条红线并显示此错误消息计算器answer很简单,使返回类型

c# - T 必须是具有公共(public)无参数构造函数的非抽象类型,以便将其用作泛型类型或方法中的参数 'TModel'

我尝试在SO中搜索答案并偶然发现了类似的问题,但我无法使用它们来解决我的问题,因此请尽量不要将其标记为重复。让我们继续进行真正的交易:我有一个用于标准化EntityFramework数据库优先模型的通用库。这些是我创建的通用类:publicabstractclassGenericLookupModel:IActive,ICreated,IModified,IIdentity,IStringValue{publicboolis_active{get;set;}publicstringvalue{get;set;}publicstringdescription{get;set;}publi

c# - 如何将 float 和泛型相乘?

我正在使用C#在OSX上的Unity3.4.2中编程。我有一个类如下:classFoo{publicTDoFoo(Tbar){floataFloatValue=1.0f;//Dootherstuff...returnaFloatValue*bar;}}当Unity编译这个类时,它给我这个错误信息:errorCS0019:Operator*'cannotbeappliedtooperandsoftypefloat'and`T'我知道我为T提供的类型将支持float乘法。在这种情况下,我该如何实现泛型乘法? 最佳答案 啊哈,好样的Has

c# - 将值从字符串转换为 Guid 或 int 的泛型类型

我有一个通用方法,可以将id从字符串(例如,从ASP.NET窗体上的HiddenField的值中检索)转换为目标类型并对其执行某些操作。privatevoidMyMethod(stringrawId,ActiondoSomethingWithId){Tid=(T)Convert.ChangeType(rawId,typeof(T));doSomethingWithId(id);}T将是Guid或Int32,当它是Guid时,上面的代码(在运行时)失败,表示从String到Guid的转换无效。然后我想我可能会尝试检查类型,如果是Guid,则实例化一个新的Guid:varid=defaul

c# - 关于 C# 泛型的最重要的事情......经验教训

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。关于泛型,您知道的最重要的事情是什么:隐藏的特性、常见错误、最佳和最有用的实践、提示...我开始使用泛型实现我的大部分库/API,并希望收集在实践中发现的最常见的模式、技巧等。让我将问题形式化:关于泛型,您学到的最重要的事情是什么?请尽量提供例子——这样会更容易理解,而不是令人费解和过于枯燥的描述谢谢这个问题有点类似于Jon'squestion,不过,在

c# - 泛型的泛型列表

我试图在一个通用列表中存储一个通用对象列表,但我在声明它时遇到了困难。我的对象看起来像:publicclassField{publicstringName{get;set;}publicstringDescription{get;set;}publicTValue{get;set;}/*...*/}我想创建一个列表。我的问题是列表中的每个对象都可以有一个单独的类型,因此填充的列表可能包含如下内容:{Field,Field,Field,Field}那么我该如何声明呢?List>(我希望尽可能保持类型安全,所以我不想使用ArrayList)。 最佳答案

C# 泛型 - 通过使包装类泛型获得什么?

考虑这个泛型类:publicclassRequestwhereTOperation:IOperation{privateTOperation_operation{get;set;}publicstringMethod{get{return_operation.Method;}}publicRequest(TOperationoperation){_operation=operation;}}与下面的非通用版本相比,上面的通用版本有什么真正的好处?publicclassRequest{privateIOperation_operation{get;set;}publicstringMet