【问题标题】:C# Returning custom class ArrayC# 返回自定义类数组
【发布时间】:2012-12-26 17:51:27
【问题描述】:

我定义了一个自定义类:

class Car
{
    public string a;
    public string b;
    public string c;

    public static void GetCar()
    {
        var car = new Car[4];
        for(int i=0; i<4; ++i)
        {
            novica[i]= new Novica();
            novica[i].a="abc";
            novica[i].b="abc";
            novica[i].c="abc";
        }

    }
}

这会用值填充数组,现在我想在不属于此类的函数中使用该数组及其获取的值(从 HTML 加载字符串)。有可能吗?如果有,怎么做?

【问题讨论】:

  • 您需要更详细地指定您想要的内容。
  • 我想你实际上想要car[i] = new Novica();
  • 抱歉 novica - 那里应该有车。复制粘贴:D

标签: c# arrays class


【解决方案1】:

为了在其他地方使用它,您需要从函数中返回数组,如下所示:

public static Car[] GetCar()
    {
        var car = new Car[4];
        for(int i=0; i<4; ++i)
        {
            car[i]= new Novica();
            car[i].a="abc";
            car[i].b="abc";
            car[i].c="abc";
        }

        return car;
    }

【讨论】:

  • 这看起来不错。我认为他想返回novica
【解决方案2】:

你不能。你的方法实际上并没有返回任何东西。

如果您要更改方法签名以返回该方法创建的数组:

public static Car[] GetCar()
{
    // Body

    return car;
}

调用将变得如此简单:

var cars = Car.GetCar();

【讨论】:

    【解决方案3】:

    我建议稍微不同的结构。提供一个包含所有汽车的数组作为静态属性

    public class Car
    {
        public static Car[] AllCars { get; private set; }
    
        public Car()
        {
            // Class and constructor somewhat simplyfied.
            AllCars = new Car[4];
            for (int i = 0; i < 4; ++i) {
                AllCars[i] = new Novica();
            }
        }
    }
    

    现在您可以使用这样的汽车了

    foreach (Car car in Car.AllCars) {
        // do something with car
    }
    

    或使用

    访问特定汽车
    string a = Car.AllCars[i].a;
    

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多