gpt4 book ai didi

c# - 如何根据某些条件创建对象

转载 作者:太空狗 更新时间:2023-10-30 00:14:52 24 4
gpt4 key购买 nike

如何实现下面这样的事情?

dynamic prod = vid.HasValue ? 
CatalogRepository.GetProductDetailByProductId(pid.Value, vid)
: CatalogRepository.GetProductDetailByProductId(pid.Value);

GetProductDetailByProductId(pid.Value) 返回 Product 的对象,而 GetProductDetailByProductId(pid.Value, vid) 返回 的对象>ProductVariant.

我正在将对象分配给一个动态变量,因此它应该在运行时被识别,但它在编译时给我类型转换错误。

最佳答案

我猜你有一个 CastException 类型的错误。

将您的第一个项目转换为一个对象,它应该可以编译:

dynamic prod = vid.HasValue ? 
(dynamic)CatalogRepository.GetProductDetailByProductId(pid.Value, vid) :
CatalogRepository.GetProductDetailByProductId(pid.Value);

问题的出现是因为当您使用条件运算符时,编译器会查看第一个类型以确定整个返回的类型,并可能在对象之间应用隐式转换。

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

关于c# - 如何根据某些条件创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com