作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下定义了隐式转换运算符的类:
class A
{
...
}
class B
{
private A m_a;
public B(A a)
{
this.m_a = a;
}
public static implicit operator B(A a)
{
return new B(a);
}
}
现在,我可以隐式地将 A 转换为 B。
但为什么我不能隐式地将 A[] 转换为 B[] 呢?
static void Main(string[] args)
{
// compiles
A a = new A();
B b = a;
// doesn't compile
A[] arrA = new A[] {new A(), new A()};
B[] arrB = arrA;
}
谢谢,马尔基。
最佳答案
正如 Mehrdad Afshari 所提到的,隐含地执行此操作并不走运。你必须明确,它会涉及一个数组副本。值得庆幸的是,您可能可以用一行代码来完成:
arrB = arrA.Cast<B>().ToArray();
尽管如果您只想在 foreach
语句中迭代 arrB
,您可以通过省略 ToArray()
来避免复制
关于c# - C# 中的隐式数组转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3047727/
我是一名优秀的程序员,十分优秀!