c#三元运算符返回不同类型 [英] c# Ternary operator returning different types

查看:934
本文介绍了c#三元运算符返回不同类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用三元组返回不同类型,虽然我似乎遇到一些问题。我的问题是三元运算符不能返回不同类型?

  //这行会导致错误
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆