簡體   English   中英

C#需要幫助處理數組

[英]c# need help working with arrays

有沒有一種方法可以將它們放入一維數組或二維數組中。 我已經編寫了代碼,看起來有點不整潔,而且可以縮短它的時間嗎?

    double worstPrice = 6.47;
    double bestPrice = 0.99;
    double CivetCatPrice =29.14;
    double whenPrice = 10.50;
    double everythingPrice = 319.56;
    int bestStock = 3238;
    int worstStock = 8;
    int civetCatstock = 3;
    int whenStock = 37;
    int everythingStock = 2;

您可以像這樣為每個雙精度和整數創建一個數組

double[] priceData = new double[]{ 6.47, 0.99, 29.14, 10.50, 319.56 };
int[] stockData = new int[]{ 3238, 8, 3, 37, 2 };

另外,如果您希望他們保留名字,可以使用字典

Dictionary<string, double> priceDict = new Dictionary<string, double>();
priceDict.Add("worstPrice", 6.47);
//And so on for each double

Dictionary<string, int> stockDict = new Dictionary<string, int>();
priceDict.Add("bestStock", 3238);
//And so on for each int

這些中的值可以這樣稱呼

double worstMinusBestPrices = priceData[0] - priceData[1]; //For arrays
double worstMinusBestPrices = priceDict["worstPrice"] - priceDict["bestPrice"] //For dictionaries

您可以實現一個自定義類,該類將這些值保留為具有有意義名稱的屬性。 這樣,您的代碼將更具可讀性,可維護性和魯棒性。

例如(您不需要所有這些類,它只應該給您一個想法):

public abstract class Animal
{
    public Animal(string animalName)
    {
        this.Name = animalName;
    }
    //insert properties and methods which all aimals share here
    public string Name { get; set; }
}

public class CibetCat : Animal
{
    public CibetCat() : base("CibetCat")
    {
    }

    //insert properties and methods which all CibetCats share here
}

現在,您的班級包含價格和股票信息以及對動物本身的引用(在您的示例中為CibetCat ):

public class AnimalStock // or AnimalPrice or whatever
{
    public AnimalStock(Animal animal)
    {
        this.Animal = animal;
    }

    public AnimalStock(Animal animal, decimal worstPrice, decimal bestPrice, int bestStock, int worstStock)
    {
        this.Animal = animal;
        this.Worstprice = worstPrice;
        this.BestPrice = bestPrice;
        this.BestStock = bestStock;
        this.WorstStock = worstStock;
    }

    public Animal Animal { get; set; }
    public decimal Worstprice { get; set; }
    public decimal BestPrice { get; set; }

    public int BestStock { get; set; }
    public int WorstStock { get; set; }

    // ...
}

很多代碼,但並不復雜。 現在,您可以編寫以下簡單易讀的代碼:

Animal cibetCat = new CibetCat();
AnimalStock stock = new AnimalStock(cibetCat);
stock.BestPrice = 0.99m;
stock.Worstprice = 6.47m;
stock.BestStock = 3238;
// ...

稍后,您可以從單個實例訪問所有這些屬性(或其方法)。

Console.WriteLine("Animal's best-price is: {0}", stock.BestPrice); // etc

正如Alfie所指出的,您可以使用字典-但是您要通過字符串標識符引用事物,您必須記住該標識符。

另一種方法是使用類或結構。 當然,有很多方法可以做到這一點,但其中包括:

public class Things
{
    public double worstPrice = 6.47;
    public double bestPrice = 0.99;
    public double CivetCatPrice =29.14;
    public double whenPrice = 10.50;
    public double everythingPrice = 319.56;
    public int bestStock = 3238;
    public int worstStock = 8;
    public int civetCatstock = 3;
    public int whenStock = 37;
    public int everythingStock = 2;
}

另一種方法是:

public class Things
{
    public double WorstPrice { get; readonly set; }
    public double BestPrice = { get; readonly set; }
    // etc

    public Things(double worstPrice, double bestPrice) // etc
    {
        WorstPrice = worstPrice;
        BestPrice = bestPrice;
    }
}

兩種方法都各有利弊。 另一種潛力是使用類/結構的集合來對事物進行分組並以有意義的方式對其進行匯總。

喜歡:

public class Thing
{
    public string ThingLabel { get; readonly set; }
    public double ThingPrice { get; readonly set; }
    public int ThingQuantity { get; readonly set; }

    // the value of your stock, calculated automatically based on other properties
    public double ThingValue { get { ThingPrice * ThingQuantity; } }

    public Thing(string thingLabel, double thingPrice, int thingQuantity)
    {
        ThingLabel = thingLabel;
        // etc
    }
}

public void DoStuff()
{
    List<Thing> list = new List<Thing>();

    Thing thing = new Thing("Civet cat", 500, 10);

    list.Add(thing);
    list.Add(new Thing("Sea flap flap", 100, 5);
    list.Add(new Thing("Nope Rope", 25, 4);

    Console.WriteLine("The value of {0}'s stock is: {1}", thing.ThingLabel, thing.Value);
}

還有另一種方法是使用基類並創建不同類型的子類。 可能性幾乎是無限的! 您只需要決定哪種方法最適合您自己,以后以及您的潛在團隊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM