我在c#中有一堆具有共同方法finalPrice()
的对象。我把它们全部放在一个数组中。
我想使用foreach
,因此我可以对每个finalPrice()
执行precioBase
。
finalPrice()
是我希望在每次迭代中显示的属性,但首先我必须在数组的每个对象上使用Electrodomestico articulo1 = new Electrodomestico(1000, 5,'F',"azul");
Electrodomestico articulo2 = new Electrodomestico();
Electrodomestico articulo3 = new Electrodomestico(1600, 60);
Electrodomestico articulo4 = new Electrodomestico(3000, 90, 'J');
Electrodomestico articulo5 = new Electrodomestico(1000, 5, 'F', "violeta");
Lavadora articulo6 = new Lavadora();
Lavadora articulo7 = new Lavadora(10, 600, 'A', "rojo", 50);
Television articulo8 = new Television();
Television articulo9 = new Television(20, 5000, 'D', "gris", true, 60);
Television articulo10 = new Television(10, 10000);
object[] electrodomestico = {articulo1,articulo2,articulo3,articulo4,articulo5,articulo6,articulo7,articulo8,articulo9,articulo10 };
foreach(double elarticulo in electrodomestico)
{
}
(每个" articulo")。
代码:
a = wd.execute_script("return checkdata(arguments[0])", code)
答案 0 :(得分:3)
希望我不会投票给予帮助,但这里是你问题的解决方案。您列出的类应该都实现一个通用接口。如下图所示:
interface ICommonPriceFunctions
{
double FinalPrice();
}
这样代码就知道实现ICommonPriceFunctions
接口的所有类都具有FinalPrice()
方法。然后,您需要修改类以实现ICommonPriceFunctions
接口并编写FinalPrice()
方法的代码。如下所示:
class Electrodomestico : ICommonPriceFunctions
{
public double FinalPrice()
{
Console.WriteLine("Electrodomestico .FinalPrice()");
return 0.0; // return whatever value you need
}
}
您需要为所有类执行操作并根据类修改FinalPrice()
方法。然后只需创建一个类型ICommonPriceFunctions
的数组,循环遍历项目然后调用FinalPrice()
方法。如下所示:
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
var electrodomestico = new Electrodomestico();
var lavadora = new Lavadora();
var television = new Television();
var objects = new ICommonPriceFunctions[]{ electrodomestico, lavadora, television };
foreach(var ob in objects){
var finalPrice = ob.FinalPrice();
}
Console.ReadLine();
}
}
}
答案 1 :(得分:0)
您无法访问字段或方法,因为您已将数组键入为对象数组。你可以这样写:
var electrodomestico = new Electrodomestico[] { articulo1, articulo2, articulo3, articulo4, articulo5, articulo6, articulo7, articulo8, articulo9, articulo10 };
这意味着您现在拥有一个Electrodomestico
数组。
for for-loop:
foreach(double elarticulo in electrodomestico)
你说每个对象都是双重的。这是不正确的 - 每个对象都是LavaDora
,Television
等。由于它们都是从Electrodomestico
继承的,我们需要写:
foreach(Electrodomestico elarticulo in electrodomestico)
但是,由于我们现在有一个打字数组,我们不需要再次指定它(C#可以为我们解决)
foreach(var elarticulo in electrodomestico)
我仍然不确定你的意思:
precioBase是我希望在每次迭代中显示的属性,但首先我必须对数组的每个对象使用finalPrice()(每个" articulo")。
这是否意味着您需要运行finalPrice()
来计算值,然后通过precioBase
检索它,或finalPrice()
是否返回precioBase
的值。
我告诉我们finalPrice()
给我们想要的价值。在这种情况下,我们可以写:
foreach(var elarticulo in electrodomestico)
{
var finalPrice = elarticulo.finalPrice();
Console.WriteLine(finalPrice);
}
答案 2 :(得分:0)
我怀疑这三种类型都可以扩展基类型
mybase[] electrodomestico = {articulo1,articulo2,articulo3,articulo4,articulo5,articulo6,articulo7,articulo8,articulo9,articulo10 };
var finalPrice = (from o in electrodomestico select o.finalPrice()).Sum();
可以是此基类型的摘要。
那么你可以这样写:
@media print {
<your element> {page-break-after: always;}
}