c# - 作为国家的演员表:列表
问题描述
我创建了一个国家资料
public class Country
{
public string Name { get; set;}
}
和国家列表
public class Countries : List<Country>
{}
现在我想将 List 分配给国家类型变量
Countries countries = new List<Country>(new Country[] {new Country()});
但不幸的是它不起作用。它说
无法将列表转换为国家
原因是什么?我应该将列表更改为其他内容吗?
解决方案
该类Countries
派生自List<Country>
,这意味着它更具体。您不能将更通用的类分配给旨在用于更具体事物的参考。
Countries countries = new List<Country>(); //Won't work
String s = new object(); //Won't work
您可以将特定分配给一般,例如
List<Country> countries = new Countries(); //Will work
object o = ""; //Will work
如果您有 aList<Country>
并且需要将其转换为Countries
对象,则可以通过实现允许您填充列表的构造函数之一来实现,如下所示:
public class Country
{
public string Name { get; set; }
}
public class Countries : List<Country>
{
public Countries(IEnumerable<Country> initializationData) : base(initializationData)
{
//No body. Work is done by base class constructor.
}
}
现在你可以:
List<Country> list = new List<Country>();
Countries countries = new Countries(list);
请注意,这会重复,而不是强制转换列表,因此您最终会得到对包含相同数据的两个不同对象的两个引用。这是唯一的方法。
推荐阅读
- c# - Blazor 服务器:努力向 Google 身份验证添加策略以限制仅访问我的帐户
- architecture - 具有 N 层的 ASP.Net MVC
- ios - Ios 金刚鹦鹉周期表添加图像
- blockchain - 测试网上的 Chainlink 预言机
- python - Numpy 数组跨越 2 个值并获取索引
- vue.js - @keyup 方法调用被一键延迟
- c++ - 可以推断出偏特化的类型吗?
- python - 如何在 Docker Desktop 中设置 Python 应用程序开发环境
- python - 无法实时更新数据 firebase 数据库
- django - 静态文件夹中的 Django 图像无法在 Heroku 项目中显示