案例是我有以下课程,例如:
public class SendFile
{
public SendFile(Uri uri) { /* some code here */ }
public SendFile(string id) { /* some code here */ }
}
Run Code Online (Sandbox Code Playgroud)
然后,我们知道如果我想解析构造函数,我不能这样做,如下所示:
// some string defined which are called "address" and "id"
var sendFile = new SendFile(String.IsNullOrEmpty(address) ? id : new Uri(address));
Run Code Online (Sandbox Code Playgroud)
我的问题是如何以干净的方式解决这个问题,而不在代码中创建"if"分支?喜欢以下内容:
SendFile sendFile;
if(String.IsNullOrEmpty(address))
{
sendFile = new SendFile(id);
}
else
{
sendFile = new SendFile(new Uri(address));
}
Run Code Online (Sandbox Code Playgroud)
在上面的版本中,您会收到以下编译错误:
无法确定条件表达式的类型,因为'string'和'System.Uri'之间没有隐式转换
阅读MSDN文档时,它指出:
first_expression和second_expression的类型必须相同,或者从一种类型到另一种类型必须存在隐式转换.
由于string并且Uri没有彼此之间的隐式转换(您也不想要,因为您为什么要使用两个不同的构造函数...),要使用条件运算符,您应该稍微改变一下:
var sendFile = String.IsNullOrEmpty(address) ? new SendFile(id) :
new SendFile(new Uri(address));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |