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: