c#三元运算符返回不同类型 [英] c# Ternary operator returning different types
问题描述
我试图使用三元组返回不同类型,虽然我似乎遇到一些问题。我的问题是三元运算符不能返回不同类型?
//这行会导致错误
propertyGrid.Instance =(directoryRecord.directoryInfo!= null)
? directoryRecord.directoryInfo
:directoryRecord.fileInfo;
//编译精细
propertyGrid.Instance = directoryRecord.directoryInfo;
//编译精细
propertyGrid.Instance = directoryRecord.fileInfo;
错误
无法确定条件表达式的类型,因为有
在'System.IO.DirectoryInfo'和
'System.IO.FileInfo'之间没有隐式转换
不,这不会像这样工作。
em>具有特定类型。
您可以使其工作方式如下:
propertyGrid.Instance =(directoryRecord.directoryInfo!= null)
? (object)directoryRecord.directoryInfo
:(object)directoryRecord.fileInfo;
I'm trying to use the ternary to return differing types, although I seem to be encountering some problems. My question is can the ternary operator not return differing types?
// This line causes an error
propertyGrid.Instance = (directoryRecord.directoryInfo != null)
? directoryRecord.directoryInfo
: directoryRecord.fileInfo;
// Compiles fine
propertyGrid.Instance = directoryRecord.directoryInfo;
// Compiles fine
propertyGrid.Instance = directoryRecord.fileInfo;
Error
Type of conditional expression cannot be determined because there is no implicit conversion between 'System.IO.DirectoryInfo' and 'System.IO.FileInfo'
No, this doesn't work like that.
The expression of a conditional operator has a specific type. Both types used in the expression must be of the same type or implicitly convertible to each other.
You can make it work like this:
propertyGrid.Instance = (directoryRecord.directoryInfo != null)
? (object)directoryRecord.directoryInfo
: (object)directoryRecord.fileInfo;
这篇关于c#三元运算符返回不同类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!