在C#中是否可以使用具有1种以上返回类型的函数?

我知道函数本身的返回类型不能超过1.我在寻找替代品.

情境

我有一个具有各种属性的类产品.
我有一个班级折扣,其中有很多其他班级(不同类型的折扣)

折扣(无论类型如何)都是对象,因为它们都具有类型(百分比/固定)和值(十进制格式的价格)等.每个折扣都具有分配给它的产品,以便系统知道应用此折扣规则的产品.

三种折扣类型:

基本折扣
高级折扣
超级折扣

我有一个List< T>每一个不同的折扣,以便它们按类型分组.

我的目标是拥有一个将产品作为参数的函数,并循环浏览折扣列表中的每个折扣以检查产品是否存在.如果找到对象,当我找到该对象时,我希望函数返回该对象,无论它是BasicDiscount,AdvancedDiscount,SuperDiscount等.(列出的折扣类型将是我的Discounts类中的折扣类型)

这是我目前所在位置的一个示例.

假设产品X上应用了BasicDiscount.

function object getDiscount(Product p){

    (UnknownType) discount;

     foreach (BasicDiscount b in BasicDiscounts)
                    if (b.Product.ID == p.ID)
                       discount = b;
     foreach (AdvancedDiscount ad in AdvancedDiscounts)
                    if (ad.Product.ID == p.ID)
                       discount = ad;
     foreach (SuperDiscount sd in SuperDiscounts)
                    if (sd.Product.ID == p.ID)
                       discount = sd;

     return discount;

}

由于我不知道该产品可以提供哪种折扣,我该如何退回正确的折扣?

还是有另一种方法?

TLDR; -如果您必须创建一个必须返回名称或年龄的函数(以int或string作为其数据类型),但是您不知道会选择哪个函数-您的函数将返回哪种返回类型是?

非常感谢您的帮助,谢谢!

上一篇:多线程环境下,程序运行真是危机四伏


下一篇:MySQL数据类型超出范围