将arraylist更改为generic

Roc*_*ngh 1 .net c# generics .net-3.5

我使用下面的代码:

            var list = new Collection<ArrayList>
                       {
                           new ArrayList
                               {
                                   1,
                                   "Test1"
                               },
                           new ArrayList
                               {
                                   2,
                                   "Test2"
                               },
                       };
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我想避免使用ArrayList并使用泛型.在上面的代码中可以吗?

编辑:上面我在一个arraylist对象中只使用了两个值,我可能有多个int和string的项目.

Ode*_*ded 5

您不能在通用列表中混合类型(除非泛型类型object,但这等同于ArrayList并且只是对泛型的反转).

但是你可以创建一个包含一个类stringint并用它作为一个通用的列表泛型参数.

public class MyClass
{
 public MyString string { get; set; }
 public MyInt int { get; set; }
}

var list = new Collection<MyClass>
           {
             new MyClass { MyInt = 1, MyString = "Test1" },
             new MyClass { MyInt = 2, MyString = "Test2" }
           }
Run Code Online (Sandbox Code Playgroud)

另一种选择,如果使用.NET 4.0则使用a Tuple,但我宁愿使用强类型类.

(未经测试的代码):

 var list = new Collection<Tuple<int,string>>
           {
             Tuple.Create(1, "Test1"),
             Tuple.Create(2, "Test2")
           }
Run Code Online (Sandbox Code Playgroud)