c# - 在 C# 中可以用另一个列表对象替换列表对象
问题描述
var newListObject = new List<object>();
if(a)
{
newListObject = new List<AnnualObject>();
}
else
{
newListObject = new List<MonthlyObject>();
}
解决方案
是的,这样做很容易 - 您需要放弃编译时类型安全,因此通过切换到dynamic
或非泛型IEnumerable
/IList
为您的变量类型。
dynamic newListObject = new List<object>();
if (a)
{
newListObject = new List<AnnualObject>();
}
else
{
newListObject = new List<MonthlyObject>();
}
newListObject.Add(a ? new AnnualObject() : new MonthlyObject());
Console.WriteLine(newListObject[0]);
请注意,通常它不是其他任何人都可以查看或修改的代码的解决方案。如果您需要使用直接允许您执行此操作的语言(如 JavaScript)跳过类型安全,可能会更好。
对于 C#,可能会使用基类项列表或单独列表,但保留编译时类型安全。
推荐阅读
- r - 克罗内克积函数定义
- git - Github 应用程序更新多个存储库
- python - 在 Pyspark 和 Python 中对具有多个值的字符串进行排序
- sqlite - 在事务中通过准备好的语句将数组绑定到 blob
- mysql - 根据相似标签查找SQL上的相似新闻
- r - 如何在 R 中创建不平衡的面板数据
- javascript - Firestore如何使用javascript检查云Firestore中的数组中是否存在元素
- powerbi - 使用过滤器对多列进行 PowerBI 计数查询
- ruby-on-rails - 如何检查Rails 5.1中是否存在fragment_cache
- javascript - React:检测并包装自定义元素中的链接