Jit*_*oli 4 c# asp.net asp.net-mvc-4
如何实现以下类型的东西?
dynamic prod = vid.HasValue ?
CatalogRepository.GetProductDetailByProductId(pid.Value, vid)
: CatalogRepository.GetProductDetailByProductId(pid.Value);
Run Code Online (Sandbox Code Playgroud)
GetProductDetailByProductId(pid.Value)
返回一个Object of Product
while GetProductDetailByProductId(pid.Value, vid)
返回一个Object ProductVariant
.
我将对象分配给动态变量,因此应该在运行时识别它,但它在编译时给出了类型转换错误.
我猜你有类型CastException的错误.
将您的第一个项目转换为Object,它应该编译:
dynamic prod = vid.HasValue ?
(dynamic)CatalogRepository.GetProductDetailByProductId(pid.Value, vid) :
CatalogRepository.GetProductDetailByProductId(pid.Value);
Run Code Online (Sandbox Code Playgroud)
出现问题是因为当您使用条件运算符时,编译器会查看第一个类型以确定整个返回的类型,并可能在对象之间应用隐式转换.
var s = true ? "s" : 1 // doesn't compile, no implicit conversion between string and int
var f = true ? 2.0F : 1 // compile, implicit conversion exist between float and int
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
105 次 |
最近记录: |