c# - 将集合传递给方法的格式

标签 c# collections

我使用的 API 具有需要此类参数的方法:

System.Collections.ObjectModel.Collection<GenericTickType> genericTickList

如何为该参数实例化一个对象?这是我尝试过的方法,但它一直说方法调用有一些无效参数。

List<TickType> ticks_to_get = new List<TickType> { TickType.Price };

我试过直接实例化一个 Collection 而不是一个 List,但这似乎不起作用。

最佳答案

"I've tried instantiating a Collection directly instead of a List and that doesn't seem to work."

你得到了什么错误?您绝对可以创建 Collection<T> 的实例直接地说,它不是一个抽象类,它有几个公共(public)构造函数,包括一个无参数的构造函数。你可以这样做,例如:

var values = new System.Collections.ObjectModel.Collection<int> { 1,2,3,4 };

我注意到您的示例代码有一个 GenericTickType和一个 TickType .这是一个错误还是您实际上有两个类(class)?你说它是一个枚举(哪个?),所以一个不可能从另一个派生。如果它们是两个枚举类型,Collection<GenericTickType>Collection<TickType>是两个不同的类,一个不能分配给另一个。

现在,如果TickType 可类型转换GenericTickType (如果它们都是枚举,并且假设它们共享相同的数值,它们可能是),您仍然无法转换 Collection<TickType>Collection<GenericTickType> .对于大多数类(在 C# 4 中),C# 中还没有对立/协变。但是你可以施放每个 TickType通过做这样的事情:

List<GenericTickType> list = new List<GenericTickType> { (GenericTickType)TickType.Price };
list.Add((GenericTickType)TickType.Price); // add more...
Collection<GenericTickType>genericTicks = new Collection<GenericTickType>(list);

如果您已经有一个 List<TickType>并且可以访问 C# 3.0 和 LINQ,您可以这样做:

List<TickType> ticks = new List<TickType> { TickType.Price };
list.Add(TickType.Price); // add more...
List<GenericTickType> castedList = ticks.Cast<GenericTickType>().ToList();
Collection<GenericTickType>genericTicks = new Collection<GenericTickType>(castedList);

这使用了 LINQ Cast<T>()ToList<T>() each 的扩展方法 TickType在原始列表中为 GenericTickType并创建一个新的 List<GenericTickType>用于实例化 Collecion<GenericTickType> . (我避免使用 var,因此您可以在每个步骤中看到类型)。

关于c# - 将集合传递给方法的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/926695/

相关文章:

asp.net-mvc - ASP.NET MVC 编辑集合最佳实践 - 您的意见

.net - 是否有一个 IDictionary 实现可以按照添加的顺序保存键? (未排序)

android - ORMLite 中的集合

mysql - SQLDependency 相当于 MySQL

c# - Windows 服务无法启动 'Error 1053: The service did not respond to the start or control request in timely fashion'

c# - 你如何使用 mimekit 解析一组电子邮件地址?

java - 如何通过 HQL 获取 map

java - 是否可以使用 Java Guava 将连接器(收集器、累加器)应用于函数?

c# - 使用 SDK 和 Uploadify 将文件上传到 Amazon S3 时显示的上传进度不正确

c# - C# 中的 C++ dll