簡體   English   中英

C#轉換幫助和PHP

[英]C# Conversion Help & PHP

我有另一個問題,將數組從php轉換為c#。

public $array = array(103 => array('', ''), 102 => array('', ''), 101 => array('', '', ''), 100 => array('', '', '', ''));

這就是我所擁有的:

public Dictionary<int, List<string>> waddlesById = new Dictionary<int, List<string>>();

問題是每當我這樣做時:

sizeof($this->array[$waddleId]) - 1

等於-1,但是在c#中何時執行:

waddlesById[waddleId].Count - 1

等於0。這是我的構造函數:

string maxSeats = String.Empty;
            foreach (int waddleId in sledRacing)
            {
                switch (waddleId)
                {
                    case 103:
                    case 102:
                        maxSeats = ",";
                        break;

                    case 101:
                        maxSeats = ",,";
                        break;

                    case 100:
                        maxSeats = ",,,";
                        break;
                }
                if (waddlesById.ContainsKey(waddleId))
                {
                    waddlesById[waddleId].Add(maxSeats);
                }
                else
                {
                    List<string> newInner = new List<string>();
                    newInner.Add(maxSeats);
                    waddlesById.Add(waddleId, newInner);
                }
            }

任何幫助表示贊賞

使用.Count將自動創建條目。 使用waddlesById.ContainsKey(waddleId)代替: http : //msdn.microsoft.com/zh-cn/library/htszx2dy.aspx

我認為您在C#中混淆了列表和數組。 @Simon Witehead是正確的,您可能需要重新考慮C#習慣用法中的代碼。 同時,它使我想起了LookUp類型(我相信那不是眾所周知的類型),盡管我試圖(希望)以某種有用的方式回答您的問題。

在此之前,讓我先清除一件事:我假設您正在嘗試使用以下代碼創建數組:

maxSeats = ",,,";

如果這是正確的,那么這就是創建具有三個元素的數組的方法:

var myArray = new string[3];
// or similar to your PHP code
var myArray = new string[] { "", "", "" };

我認為,對於LookUp示例,它提供了一種執行此類任務的更C#慣用方式:

var sledRacing = new[] { 100, 102, 103, 100, 100, 102, 101 };

var lu = sledRacing.ToLookup(
        k => k,
        k => k == 100 ? new string[3] : (k == 101 ? new string[2] : new string[1])
    );

foreach (var g in lu)
{
    Console.WriteLine(g.Key);
    foreach (var i in g)
    {
        Console.WriteLine("  - " + i.Length);
    }
}

這將產生以下輸出:

100
  - 3
  - 3
  - 3
102
  - 1
  - 1
103
  - 1
101
  - 2

說了這么多(並且對PHP不太了解,所以我無法判斷該語言是否缺少動態大小的數組或列表並進行比較),您可能需要重新考慮代碼:如果要使用列表,則不需要您無需先調整大小。 然后,您可能希望更加“面向對象”並將“ Racing Waddle”封裝在一個類中,並使用字典(或LookUp)通過它們的id對其進行索引等等。

在MSDN上,有一個使用LookUp type的類似示例 ,也可能會有所幫助。

暫無
暫無

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

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