[英]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.