技术
Cast<T>的用法
田敏
2024-10-011 分钟阅读.NETC#Backend
Cast<T> 和 OfType<T> 是 LINQ 查询方法,用于处理集合中的数据类型转换。两者虽然看起来相似,但有显著的区别,特别是在如何处理类型不匹配时。
1. Cast<T> 的用法
Cast<T> 强制将集合中的每个元素转换为指定类型 T。如果集合中的元素无法被转换为 T 类型,则会抛出异常(InvalidCastException)。
语法
IEnumerable<T> Cast<T>();
示例
ArrayList arrayList = new ArrayList();
arrayList.Add(1);
arrayList.Add(2);
arrayList.Add(3);
// 使用 Cast<int> 强制将 ArrayList 中的元素转换为 int
IEnumerable<int> castResult = arrayList.Cast<int>();
foreach (var item in castResult)
{
Console.WriteLine(item); // 输出 1, 2, 3
}
注意事项
- 如果集合中包含无法转换的类型,
Cast<T>将抛出InvalidCastException。
arrayList.Add("string");
var castResult = arrayList.Cast<int>(); // 运行时会抛出 InvalidCastException
2. OfType<T> 的用法
OfType<T> 筛选集合中属于指定类型 T 的元素,并返回它们。与 Cast<T> 不同,OfType<T> 不会尝试强制转换类型,而是仅返回符合类型 T 的元素,不符合类型的元素会被过滤掉。
语法
IEnumerable<T> OfType<T>();
示例
ArrayList arrayList = new ArrayList();
arrayList.Add(1);
arrayList.Add("string");
arrayList.Add(3);
// 使用 OfType<int> 只返回类型为 int 的元素
IEnumerable<int> ofTypeResult = arrayList.OfType<int>();
foreach (var item in ofTypeResult)
{
Console.WriteLine(item); // 输出 1, 3
}
注意事项
OfType<T>只返回能成功转换为类型T的元素,其他类型的元素会被过滤掉。
总结
Cast<T>:强制转换集合中的每个元素到指定类型T,如果遇到类型不匹配会抛出异常。OfType<T>:只返回集合中属于指定类型T的元素,忽略不匹配的元素。
选择使用场景
- 如果确定集合中所有元素都是相同类型,使用
Cast<T>。 - 如果集合中可能包含不同类型且只需要特定类型的元素,使用
OfType<T>。
版权协议:MIT返回列表