我知道函数本身的返回类型不能超过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作为其数据类型),但是您不知道会选择哪个函数-您的函数将返回哪种返回类型是?
非常感谢您的帮助,谢谢!