执行数组中对象的方法

时间:2016-05-20 04:29:48

标签: c# arrays object methods

我在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)

3 个答案:

答案 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)

你说每个对象都是双重的。这是不正确的 - 每个对象都是LavaDoraTelevision等。由于它们都是从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;}
}