c#转换帮助&PHP
本文关键字:PHP 帮助 转换 | 更新日期: 2023-09-27 18:10:41
我有另一个问题转换数组从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/en-us/library/htszx2dy.aspx
我认为你混淆了c#中的列表和数组。@Simon Witehead是对的,你可能需要重新考虑你的c#代码。同时,它提醒了我查找类型(我相信不是那么广为人知),我想我会尝试以(希望)某种有用的方式回答您的问题。
在此之前,让我先澄清一件事:我假设您正在尝试用以下代码创建一个数组:
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类型,这可能也有帮助。