gpt4 book ai didi

c# - C# 中的隐式数组转换

转载 作者:太空狗 更新时间:2023-10-30 00:04:01 24 4
gpt4 key购买 nike

我有以下定义了隐式转换运算符的类:

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/

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