Questions tagged «generics»

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

5
MIN和MAX宏的Swift等效项
在C / Objective-C中,可以使用MIN和MAX宏在两个数字之间找到最小值和最大值。Swift不支持宏,并且语言/基本库中似乎没有等效项。如果一个去同一个定制的解决方案,也许基于这样的泛型一个?
97 generics  swift 

4
.NET是否可以检查列表a是否包含列表b中的所有项目?
我有以下方法: namespace ListHelper { public class ListHelper<T> { public static bool ContainsAllItems(List<T> a, List<T> b) { return b.TrueForAll(delegate(T t) { return a.Contains(t); }); } } } 其目的是确定一个列表是否包含另一个列表的所有元素。在我看来,类似的东西已经内置到.NET中了,是这样吗?我是否在复制功能? 编辑:抱歉我没有事先声明我在Mono版本2.4.2上使用此代码。
97 c#  .net  list  generics  mono 



7
在C#泛型中无效?
我有一个接受请求并提供响应的通用方法。 public Tres DoSomething<Tres, Treq>(Tres response, Treq request) {/*stuff*/} 但是我并不总是希望为我的请求提供响应,也不总是希望提供请求数据来获得响应。我也不想完全复制和粘贴方法以进行较小的更改。我想要的是能够做到这一点: public Tre DoSomething<Tres>(Tres response) { return DoSomething<Tres, void>(response, null); } 以某种方式可行吗?似乎专门使用void无效,但是我希望找到类似的东西。
94 c#  generics 


11
结合多个元素集合的优雅方式?
假设我有任意数量的集合,每个集合都包含相同类型的对象(例如List<int> foo和List<int> bar)。如果这些集合本身是一个集合(例如类型)List<List<int>>,则可以SelectMany将它们全部组合成一个集合。 但是,如果这些集合不在同一个集合中,给我的印象是我必须编写这样的方法: public static IEnumerable<T> Combine<T>(params ICollection<T>[] toCombine) { return toCombine.SelectMany(x => x); } 然后我会这样称呼它: var combined = Combine(foo, bar); 是否有一种干净,优雅的方式来组合(任意数量)集合,而不必编写上述实用程序方法Combine?看起来很简单,应该可以在LINQ中做到这一点,但也许不是。

7
我可以对Dictionary <TKey,TValue>条目使用集合初始化程序吗?
我想在下一段代码中使用集合初始化程序: public Dictionary&lt;int, string&gt; GetNames() { Dictionary&lt;int, string&gt; names = new Dictionary&lt;int, string&gt;(); names.Add(1, "Adam"); names.Add(2, "Bart"); names.Add(3, "Charlie"); return names; } 所以通常应该是这样的: return new Dictionary&lt;int, string&gt; { 1, "Adam", 2, "Bart" ... 但是正确的语法是什么?

10
创建原始int列表?
有没有一种方法可以创建基本类型int或Java中任何基本类型的列表,如下所示? List&lt;int&gt; myList = new ArrayList&lt;int&gt;(); 看来我能做到 List myList = new ArrayList(); 并将“ int”添加到此列表中。但这意味着我可以在此列表中添加任何内容。 我唯一的选择是创建一个int数组并将其转换为一个列表或创建一个Integer对象的列表吗?


6
测试泛型类型是否为字符串的最佳方法?(C#)
我有一个通用类,应允许任何类型,原始或其他类型。唯一的问题是使用default(T)。当您对值类型或字符串调用default时,它将初始化为一个合理的值(例如空字符串)。调用default(T)对象时,它返回null。由于各种原因,我们需要确保它不是原始类型,那么我们将拥有该类型的默认实例,而不是 null。这是尝试1: T createDefault() { if(typeof(T).IsValueType) { return default(T); } else { return Activator.CreateInstance&lt;T&gt;(); } } 问题-字符串不是值类型,但是它没有无参数构造函数。因此,当前的解决方案是: T createDefault() { if(typeof(T).IsValueType || typeof(T).FullName == "System.String") { return default(T); } else { return Activator.CreateInstance&lt;T&gt;(); } } 但这感觉就像是在跳动。有没有更好的方法来处理字符串大小写?
93 c#  generics 



5
在C#泛型中是否有合理的方法来处理“默认”类型参数?
在C ++模板中,可以指定某个类型参数为默认值。即,除非明确指定,否则它将使用类型T。 可以在C#中完成或近似吗? 我正在寻找类似的东西: public class MyTemplate&lt;T1, T2=string&gt; {} 因此,该类型的实例未明确指定T2: MyTemplate&lt;int&gt; t = new MyTemplate&lt;int&gt;(); 本质上将是: MyTemplate&lt;int, string&gt; t = new MyTemplate&lt;int, string&gt;(); 最终,我正在研究一个模板被广泛使用的情况,但是我正在考虑使用其他类型参数进行扩展。我想我可以继承,但是我很好奇是否还有其他选择。

7
从数组获取通用枚举器
在C#中,如何从给定数组中获取通用枚举数? 在下面的代码中,MyArray是一个MyType对象数组。我想以MyIEnumerator所示的方式获得,但似乎我获得了一个空的枚举器(尽管我已确认MyArray.Length &gt; 0)。 MyType[] MyArray = ... ; IEnumerator&lt;MyType&gt; MyIEnumerator = MyArray.GetEnumerator() as IEnumerator&lt;MyType&gt;;

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.