gpt4 book ai didi

C#泛型列表合并

转载 作者:行者123 更新时间:2023-11-30 20:11:03 25 4
gpt4 key购买 nike

我无法合并 List 和 List? OOP 说 MyType2 是 MyType...

using System;
using System.Collections.Generic;

namespace two_list_merge
{
public class MyType
{
private int _attr1 = 0;

public MyType(int i)
{
Attr1 = i;
}

public int Attr1
{
get { return _attr1; }
set { _attr1 = value; }
}
}

public class MyType2 : MyType
{
private int _attr2 = 0;

public MyType2(int i, int j)
: base(i)
{
Attr2 = j;
}

public int Attr2
{
get { return _attr2; }
set { _attr2 = value; }
}
}

class MainClass
{
public static void Main(string[] args)
{
int count = 5;
List<MyType> list1 = new List<MyType>();
for(int i = 0; i < count; i++)
{
list1[i] = new MyType(i);
}

List<MyType2> list2 = new List<MyType2>();
for(int i = 0; i < count; i++)
{
list1[i] = new MyType2(i, i*2);
}

list1.AddRange((List<MyType>)list2);
}
}
}

最佳答案

我假设您没有使用 C# 4.0。

在 C# 的早期版本中,这将不起作用,因为该语言不支持泛型类型的逆变协变

不要担心学术术语 - 它们只是允许的方差类型(即变化)的术语。

这是一篇关于细节的好文章: http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx

要使您的代码正常工作,请这样写:

list1.AddRange(list2.Cast<MyType>());

关于C#泛型列表合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com