C# 创建一个int&;日期时间

C# 创建一个int&;日期时间,c#,.net,list,C#,.net,List,我想创建如下列表: List<int, DateTime> foo = new List<int, DateTime>(); List foo=new List(); 但我得到了这个错误: 使用泛型类型“System.Collections.generic.List”需要1个类型参数 在C#中是否可以这样做?您可以有一个int/DateTime列表 还可以使用动态并以匿名类型发送它 var foo = new List<dynamic>(); foo.A

我想创建如下列表:

List<int, DateTime> foo = new List<int, DateTime>();
List foo=new List();
但我得到了这个错误:

使用泛型类型“System.Collections.generic.List”需要1个类型参数


在C#中是否可以这样做?

您可以有一个int/DateTime列表

还可以使用
动态
并以匿名类型发送它

var foo = new List<dynamic>();

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

foreach(var d in foo)
{
    Console.WriteLine(d);
}
var foo=newlist();
Add(new{X=0,D=DateTime.Now});
foreach(foo中的变量d)
{
控制台写入线(d);
}
如果您使用的是.NET 4.0或更高版本,则可以使用
列表

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

List myList=new List();
类MyType
{
公共整数{get;set;}
公共日期时间日期时间{get;set;}
}

您可以使用收集在
列表中的或来实现这一点。出现错误是因为
列表包含一个泛型参数,因为它存储一个元素集合(所有元素都是一种基本类型)。

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

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

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

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

它是带有一个泛型类型参数的
列表,而不是
列表
。也许你想用
字典来代替它?

这取决于你想做什么

例如,如果要使用int作为索引来访问如下日期时间,可以使用:

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

dict.Add(1, DateTime.Now);
DateTime d = dict[1];
Dictionary dict=new Dictionary();
dict.Add(1,DateTime.Now);
日期时间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();
var值=新列表();
Add(新元组(1,DateTime.Now));
元组值=值。第一个();
列表
类型只接受一个泛型类型参数,但您提供了两个。如果要在每个插槽中存储两个值,则需要使用可包含这两个值的包装器类型。比如说

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

List<Storage> list = ...;
类存储{
公共int值{get;set;}
公共日期时间日期值{get;set;}
}
列表=。。。;

如果要避免创建自定义类型,也可以使用
Tuple

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

  • 创建一个元组列表

    列表

  • 使用字典

    字典


  • 那没有任何意义。您需要一个类。
    列表
    只能是一种类型。是否要创建?可以在java中使用HashMap而不是字典,我想为每个DateTime提供一个ID。@OpenMind:
    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();
    
    class Storage {
      public int IntValue { get; set; }
      public DateTime DateValue { get; set; }
    }
    
    List<Storage> list = ...;