c# - 我可以使用三元运算符来设置泛型方法参数吗?

标签 c# generics ternary-operator

我有一个非常有用的实用方法,它接受任何对象类型并将其序列化为 XML 对象。方法参数被定义为泛型,如下所示

public static string Serialize<T>(T value)

我通常会在记录之前向此方法发送一个网络服务器请求或响应,到目前为止,这对我来说在所有情况下都工作得很好。然而现在我有一个代码块,我可以在其中使用两个请求对象之一,所以我想像这样调用 Serialize 方法

Utility.Serialize((addressRequest != null)?addressRequest:billingSiteIDHouseNumberRequest)

但我不断收到一条错误消息,指出这些类型不兼容。

我也认为??运算符应该可以工作,但可惜它也给了我一个错误。

感谢您的解释。

最佳答案

假设您有不同的不相关类型,您需要将序列化位添加到三元逻辑中:

var result = addressRequest != null
    ? Utility.Serialize(addressRequest)
    : Utility.Serialize(billingSiteIDHouseNumberRequest);

关于c# - 我可以使用三元运算符来设置泛型方法参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571728/

相关文章:

c# - 使用 AWS SDK for .NET 或 REST API 从 Amazon S3 检索带有图像和样式表的 HTML 文件

c# - 使用 zxing.net 扫描多个条码

c# - 将 log4net 包含到使用 .net 4.0 构建的 .net Web 应用程序中

C通用链表

java - 使用泛型时,List 内部如何检查方法调用的类型?

vb.net - .NET 三元运算符和类型转换的问题

c++ - 为什么三元运算符转 (... ? int : unsigned long long) into int when an implicit conversion is involved?

c# - OSIsoft AF SDK 缺少程序集或引用,还添加了引用

java - 通用类 - getClass().getName()

C++14:使用三元表达式从 constexpr 推导出(自动)返回类型