创建一个int&列表约会时间

时间:2012-01-04 15:43:48

标签: c# .net list

我想创建一个像这样的List:

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

但是我收到了这个错误:

Using the generic type 'System.Collections.Generic.List<T>' requires 1 type arguments

是否可以在C#中执行此操作?

8 个答案:

答案 0 :(得分:9)

您可以拥有一个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);
}

答案 1 :(得分:4)

如果您使用的是.NET 4.0或更高版本,则可以使用List<Tuple<int,DateTime>>

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

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

class MyType
{
   public int TheInt { get; set; }
   public DateTime TheDateTime { get; set; }
}

答案 2 :(得分:4)

这取决于你想做什么。

如果你想使用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();

答案 3 :(得分:1)

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

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

List<Storage> list = ...;

如果您想避免创建自定义类型,也可以使用Tuple<int, DateTime>

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

public class Foo
{
 public int ID { set;get;}
 public DateTime CreatedDate { set;get;}

}

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

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

答案 6 :(得分:0)

List<T>有一个泛型类型参数,而不是List<T, K>。也许您想要使用Dictionary<TKey, TValue>代替?

答案 7 :(得分:0)

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

  1. 创建元组列表

    List<Tuple<int,DateTime>>

  2. 使用字典

    Dictionary<int, DateTime>