无法在 C# 中将类型 'byte[]' 隐式转换为 'byte?[]'

Posted

技术标签:

【中文标题】无法在 C# 中将类型 \'byte[]\' 隐式转换为 \'byte?[]\'【英文标题】:Cannot implicitly convert type 'byte[]' to 'byte?[]' in C#无法在 C# 中将类型 'byte[]' 隐式转换为 'byte?[]' 【发布时间】:2021-12-02 04:01:30 【问题描述】:

我给定的代码有类型转换错误:

                byte?[] AibAttachment = null; 
                MemoryStream target = new MemoryStream();
                file.InputStream.CopyTo(target);
                AibAttachment = target.ToArray();
           

在上面的代码中 AibAttachment = target.ToArray();这一行抛出了一个错误,比如“不能将'byte []'隐式转换为'byte?[]'”

请帮帮我。

【问题讨论】:

Array<byte>Array<Nullable<byte>> 不同,一个可以保存空值,另一个不能。您可能只想要byte[] AibAttachment = null;。更好的是,只需var AibAttachment = target.ToArray(); @CamiloTerevinto,好的,但是我必须将此字节数组传递给某个第三方 API,并且 AibAttachment 变量是该 API 请求的一部分,它是字节类型的?[] 【参考方案1】:

也许你可以这样做:

AibAttachment = Array.ConvertAll(target.ToArray(), i => (byte?)i);

【讨论】:

感谢它拯救了我的一天!!!【参考方案2】:

Linq 的另一个答案:

byte[] original = null; // something 
byte?[] AibAttachment =  original.Select(a => (byte?) a).ToArray();

【讨论】:

以上是关于无法在 C# 中将类型 'byte[]' 隐式转换为 'byte?[]'的主要内容,如果未能解决你的问题,请参考以下文章

c#中怎么将string转换成int型

C#错误(无法将类型'string'隐式转换为'int')[重复]

如何在 C# 中将字节 [] 转换为日期时间?

在 C# 中将对象数组隐式转换为 int 数组

无法隐式转换类型(C# 和 Visual Studio)[关闭]

如何在 C# 中将 Byte* 从 C++ 转换为 Byte[]