gpt4 book ai didi

c# - 在三元/条件运算符中转换时出现奇怪的编译器错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:52 25 4
gpt4 key购买 nike

我在使用这段代码时遇到了意外的编译器错误:

bool b = true; //or false
StringBuilder builder = ...; // a string builder filled with content
IVersePart vp = b ? (DualLanguageVersePart)builder : (VersePart)builder;

DualLanguageVersePart 和 VersePart 都实现了 IVersePart 接口(interface)。DualLanguageVersePart 和 VersePart 都有一个显式转换运算符形式的 StringBuilder。

因为这两个类都实现了类型为 vp 的接口(interface),所以我希望它能完美地工作,或者至少可以正确编译。相反,编译器报告无法在这两种类型之间进行隐式转换。

为什么这不起作用?

最佳答案

两个部分必须有相同的类型,所以试试这个:

IVersePart vp = b ? 
(IVersePart)(DualLanguageVersePart)builder :
(IVersePart)(VersePart)builder;

C# 编译器比 C++ 编译器更挑剔 :)

关于c# - 在三元/条件运算符中转换时出现奇怪的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550566/

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