Questions tagged «generics»

泛型是在多种语言中发现的参数多态形式,包括.NET语言,Java,Swift和Rust。

7
无法显式专门化泛型函数
我对以下代码有疑问: func generic1<T>(name : String){ } func generic2<T>(name : String){ generic1<T>(name) } 该generic1(名称),结果编译器错误“无法明确专门的通用功能” 有什么办法可以避免这个错误?我无法更改generic1函数的签名,因此应为(String)-> Void
91 generics  swift 

8
List <T> .Contains()很慢?
谁能解释我为什么使用泛型 List.Contains()函数这么慢? 我有List&lt;long&gt;大约一百万个数字,并且代码会不断检查这些数字中是否有特定数字。 我尝试使用Dictionary&lt;long, byte&gt;和Dictionary.ContainsKey()函数执行相同的操作,它比使用List快10-20倍。 当然,我并不是真的想为此使用词典,因为它不是那样使用的。 所以,在这里真正的问题是,有没有替代品List&lt;T&gt;.Contains(),但没有怪诞的Dictionary&lt;K,V&gt;.ContainsKey()?
90 .net  arrays  generics  list 

8
将物件投放至T
我正在用XmlReader.NET中的类解析XML文件,我认为编写通用的解析函数以通用方式读取不同的属性会很明智。我想出了以下功能: private static T ReadData&lt;T&gt;(XmlReader reader, string value) { reader.MoveToAttribute(value); object readData = reader.ReadContentAsObject(); return (T)readData; } 当我意识到时,这并不能完全按照我的计划进行。由于强制类型转换无法将a转换为数值类型,因此它会引发基本类型(例如int或)的错误。有什么办法可以让我的功能以修改后的形式出现?doublestring
90 c#  generics  casting 

9
无法将类型'Int'隐式转换为'T'
我可以打电话Get&lt;int&gt;(Stat);或Get&lt;string&gt;(Name); 但是当编译时我得到: 无法将类型'int'隐式转换为'T' 和相同的事情string。 public T Get&lt;T&gt;(Stats type) where T : IConvertible { if (typeof(T) == typeof(int)) { int t = Convert.ToInt16(PlayerStats[type]); return t; } if (typeof(T) == typeof(string)) { string t = PlayerStats[type].ToString(); return t; } }
90 c#  generics 

4
番石榴的选修课有什么意义
我最近阅读了有关此内容的内容,并看到人们在使用此类,但在几乎所有情况下,使用效果null都很好-如果不是更直观的话。有人可以提供一个具体的例子,说明在哪些Optional方面null做不到或做得更干净的事情吗?我唯一能想到的就是将其与Maps不接受null键的键一起使用,但是即使这样,也可以通过对值的空值进行“映射”来实现。谁能为我提供更令人信服的论点?谢谢。
89 java  generics  guava 

4
如何要求协议只能由特定类采用
我想要这个协议: protocol AddsMoreCommands { /* ... */ } 仅由从该类继承的类采用UIViewController。该页面告诉我,我可以指定它仅由类(相对于结构)通过编写来采用 protocol AddsMoreCommands: class { } 但是我看不到如何要求它仅由特定的班级采用。该页面稍后讨论将where子句添加到协议扩展中以检查一致性,但我也看不到如何对其进行调整。 extension AddsMoreCommands where /* what */ { } 有没有办法做到这一点?谢谢!

3
如何将通用协议用作变量类型
假设我有一个协议: public protocol Printable { typealias T func Print(val:T) } 这是实现 class Printer&lt;T&gt; : Printable { func Print(val: T) { println(val) } } 我的期望是我必须能够使用Printable变量来打印这样的值: let p:Printable = Printer&lt;Int&gt;() p.Print(67) 编译器抱怨此错误: “协议'Printable'只能用作一般约束,因为它具有Self或关联的类型要求” 难道我做错了什么 ?有任何解决这个问题的方法吗 ? **EDIT :** Adding similar code that works in C# public interface IPrintable&lt;T&gt; { void Print(T val); …
89 ios  xcode  generics  swift 

4
是否可以使用Razor创建泛型@helper方法?
我试图在Razor中编写一个类似于以下内容的助手: @helper DoSomething&lt;T, U&gt;(Expression&lt;Func&lt;T, U&gt;&gt; expr) where T : class 不幸的是,解析器认为这&lt;T是HTML元素的开始,最后出现语法错误。是否可以使用Razor创建通用方法的助手?如果是这样,语法是什么?



12
如何找出ArrayList <Object>中每个对象的类型?
我有一个由从数据库导入的不同元素组成的ArrayList,它由字符串,数字,双精度数和整数组成。有没有一种方法可以使用反射类型技术来找出每个元素持有的每种数据类型? 仅供参考:数据类型如此之多的原因是,这是一段要编写的Java代码,可以通过不同的DB来实现。

3
泛型类的默认构造函数的语法是什么?
在C#中是否禁止为泛型类实现默认构造函数? 如果没有,为什么下面的代码无法编译?(&lt;T&gt;虽然我删除它编译) 那么,为泛型类定义默认构造函数的正确方法是什么? public class Cell&lt;T&gt; { public Cell&lt;T&gt;() { } } 编译时错误:错误1类,结构或接口成员声明中的无效令牌'('
87 c#  .net  generics 

3
C#使用System.Type作为通用参数
我有一个类型列表(System.Type),需要在数据库上查询。 对于每种类型,我需要调用以下扩展方法(这是LinqToNhibernate的一部分): Session.Linq&lt;MyType&gt;() 但是我没有MyType,但是我想改用Type。 我所拥有的是: System.Type typeOne; 但是我不能执行以下操作: Session.Linq&lt;typeOne&gt;() 如何使用类型作为通用参数?
87 c#  generics  .net-4.0  types 



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.