Tag: generics

在C#XML文档中引用genericstypes的generics?

为谓词助手类编写一些XML文档。 但我不明白,我可以参考一个Expression<Func<T, bool>>没有得到一个语法错误。 这甚至有可能吗? 我试过这个: <see cref="Expression{Func{T, bool}}"/> 但是我在{T, bool}}下面得到了一条红色的波浪线。 这工作虽然: <see cref="Expression{TDelegate}"/> 任何人都有线索? 更新: 这个答案(我接受)看起来确实有效。 但是现在我已经开始收到许多关于无法解决的问题的警告。 我有一个名为ExpressionBuilder<T>的类,它很适合Expression<Func<T, bool>> 。 所以我当然想在我的XML评论中提到这一点。 我已经尝试了两个我知道的版本: <see cref="Expression&lt;Func&lt;T, Boolean&gt;&gt;"/> <see cref="Expression{Func{T, Boolean}}"/> 但是都没有工作。 (最后一个,ReSharper在{T,Boolean}}下面放了一个蓝色的波形{T,Boolean}}我在编译的地方得到了两个警告,我用它来说: 对“blah blah”的XML注释具有无法parsing的cref属性“Expression” types参数声明必须是不是types的标识符。 另见错误CS0081。 我尝试引用Range<Nullable<DateTime>> ( Range<DateTime?>没有工作,有{}和&lt; &gt; ) 我不应该提到这种types的generics?

EasyMock:如何在没有警告的情况下创buildgenerics类的模拟?

代码 private SomeClass<Integer> someClass; someClass = EasyMock.createMock(SomeClass.class); 给我一个警告“types安全性:SomeClasstypes的expression式需要未经检查的转换符合SomeClass <Integer>”。

为什么不能在.NET中定义generics索引器?

为什么不能在.NET中创build一个通用索引器? 下面的代码抛出一个编译器错误: public T this<T>[string key] { get { /* Return generic type T. */ } } 这是否意味着您不能为通用成员集合创build通用索引器?

使用通用方法实现接口

我在这一个空白,似乎无法find我写的任何以前的例子。 我试图实现一个通用的接口类。 当我实现接口时,我认为有些东西不能正常工作,因为Visual Studio会不断产生错误,说我并没有实现通用接口中的所有方法。 以下是我正在使用的一个存根: public interface IOurTemplate<T, U> { IEnumerable<T> List<T>() where T : class; T Get<T, U>(U id) where T : class where U : class; } 那么我的class级应该怎样?

我如何要求generics参数是一个实现接口的枚举?

我并不是100%相信这是一个好主意,但我今天遇到了一些代码,目前实现为: class MyWidget <T extends Enum<T> > { MyWidget(Map<T, Integer> valueMap) { mValueMap = valueMap; } Map<T, Integer> mValueMap; } MyWidget然后提供使用mValueMap将传入的Enum转换为Integer 。 我正在考虑做的是试图重构这个,所以我要声明我的枚举: interface MyInterface { public Integer getValue(); } enum MyEnum implements MyInterface { foo, bar; public Integer getValue() { return ordinal(); } } 然后我可以将MyWidget重MyWidget一些看起来很模糊的东西: public class MyWidget<T extends Enum<T> extends MyInterface> { … […]

通用类的文件名约定

我希望能够区分类的通用和常规(非通用)版本。 就像.NET框架一样,它是它的几个接口和集合类的通用和非通用版本。 ( 队列 , 队列(T) ) 我通常喜欢遵循每个文件一个类的约定(如在Java中)。 命名包含单个generics类的文件是否有一个通用约定? 我主要感兴趣的是Windows(特别是NTFS),但是看起来好像是一个很好的约定(至less是一点点)。

string.split返回一个string我想要一个List <string>是否有一个class轮将数组转换为列表?

C#中的列表有.ToArray()方法。 我想要一个数组转换成列表的逆。 我知道如何创build一个列表,并通过它循环,但我想要一个class轮交换回来。 我正在使用.NET 2.0环境中的String.Split方法,所以LINQ等不可用。

解释为什么IEnumerable比List更高效

我一直听说.net 3.5中应该使用IEnumerable而不是List,但是我找不到任何可以解释为什么它更精通的参考资料或文章。 有没有人知道解释这个的任何内容? 问这个问题的目的是为了更好地理解IEnumerable在底层做什么。 如果你能提供给我任何链接,我会做研究并发表一个答案。

为什么不是一个genericstypes?

Array声明如下: public abstract class Array : ICloneable, IList, ICollection, IEnumerable { 我想知道为什么不是这样: public partial class Array<T> : ICloneable, IList<T>, ICollection<T>, IEnumerable<T> { 如果它被声明为一个通用types,会出现什么问题呢? 如果是genericstypes,我们还需要非genericstypes吗? 如果我们愿意,它可以从Array<T> (如上所述)派生吗? public partial class Array: Array<object> { 更新: 第二点对于不再使非genericsArray成为基本types的假设也很重要。

C#List <Interface>:为什么你不能`List <IFoo> foo = new List <Bar>();`

如果你有一个接口IFoo和一个Bar : IFoo类Bar : IFoo ,你为什么能做到以下几点: List<IFoo> foo = new List<IFoo>(); foo.Add(new Bar()); 但是你不能这样做: List<IFoo> foo = new List<Bar>();