创建一个 int 和 DateTime 列表

Posted

技术标签:

【中文标题】创建一个 int 和 DateTime 列表【英文标题】:Create a List of int & DateTime 【发布时间】:2012-02-02 12:21:11 【问题描述】:

我想创建一个这样的列表:

List<int, DateTime> foo = new List<int, DateTime>();

但我收到此错误:

Using the generic type 'System.Collections.Generic.List&lt;T&gt;' requires 1 type arguments

在 C# 中可以做到这一点吗?

【问题讨论】:

这没有任何意义。你需要一门课。 List&lt;T&gt; 只能是 one 类型。你想创建一个Dictionary<TKey, TValue>吗? 在java中可以使用HashMap 不是字典,我想给每个 DateTime 一个 ID。 @OpenMind: ***.com/questions/1273139/… 【参考方案1】:

你可以有一个int/DateTime Tuples的列表。

var foo = new List<Tuple<int, DateTime>>();

这确实需要 .Net 4.0+。

我个人更喜欢创建一个简单的类并将其用于我的列表。我认为它比嵌套泛型更具可读性。

// I don't know your domain so the example is with names I'd hate to actually see
class MyType

    public int MyInteger get; set;
    public DateTime MyDateTime get; set;

也可以使用dynamic 并发送一个匿名类型。

var foo = new List<dynamic>();

foo.Add(new X = 0, D = DateTime.Now);

foreach(var d in foo)

    Console.WriteLine(d);

【讨论】:

【参考方案2】:

如果您使用的是 .NET 4.0 或更高版本,则可以使用 List&lt;Tuple&lt;int,DateTime&gt;&gt;

另一种方法是创建一个用作泛型类型的简单类 - 这样做的好处是可读性(为类型和属性提供描述性名称)。

List<MyType> myList = new List<MyType>();

class MyType

   public int TheInt  get; set; 
   public DateTime TheDateTime  get; set; 

【讨论】:

【参考方案3】:

列表只能包含一种类型。你可以在这里做两件事:

    创建一个元组列表

    List&lt;Tuple&lt;int,DateTime&gt;&gt;

    使用字典

    Dictionary&lt;int, DateTime&gt;

【讨论】:

【参考方案4】:

List&lt;T&gt; 类型只接受一个泛型类型参数,但您提供了两个。如果要在每个插槽中存储两个值,则需要使用可以包含这两个值的包装器类型。例如

class Storage 
  public int IntValue  get; set; 
  public DateTime DateValue  get; set; 


List<Storage> list = ...;

如果您不想创建自定义类型,也可以使用Tuple&lt;int, DateTime&gt;

【讨论】:

【参考方案5】:

这取决于你想做什么。

例如,如果您想使用 int 作为索引来访问 DateTime,您可以使用 Dictionary,如下所示:

Dictionary<int, DateTime> dict = new Dictionary<int, DateTime>();

dict.Add(1, DateTime.Now);
DateTime d = dict[1];

或者,如果您想存储任意值列表并允许重复,您可以使用:

  var values = new List<Tuple<int, DateTime>>();
  values.Add(new Tuple<int, DateTime>(1, DateTime.Now));
  Tuple<int, DateTime> value = values.First();

【讨论】:

【参考方案6】:

它是带有一个泛型类型参数的 List&lt;T&gt;,而不是 List&lt;T, K&gt;。也许您想改用Dictionary&lt;TKey, TValue&gt;

【讨论】:

【参考方案7】:

为什么不创建一个封装这两个属性的类?

public class Foo

 public int ID  set;get;
 public DateTime CreatedDate  set;get;


然后您可以创建该类的列表

 List<Foo> objFooList=new List<Foo>();

【讨论】:

【参考方案8】:

您可以使用Tuple&lt;int, DateTime&gt;KeyValuePair&lt;int, DateTime&gt; 来实现此目的,收集在List&lt;T&gt; 中。您收到错误是因为 List&lt;T&gt; 包含一个通用参数,因为它存储了一个元素集合(它们都是一种基本类型)。

【讨论】:

以上是关于创建一个 int 和 DateTime 列表的主要内容,如果未能解决你的问题,请参考以下文章

存储和排序同时具有 DateTime 和 Int 值的人员列表

SAP 数据类型 dats

在Python 3.4中按日期对字典列表进行排序[重复]

创建 SQL 表,其中 DATETIME 或 INT 上的空字符串不默认

如何从 Sqlite ( android ) 中的 datetime 字段获取日期

Python123上面有关datetime库函数的使用的一道程序题求助