我使用php,我非常大量地使用他的dinamyc数组。
现在我正在使用c#并且我正在搜索类似的内容。
这就是重点:
我在数据库中进行查询,它返回一个包含5个字段的记录集:
我想动态创建像这样的多维数组
(PHP代码) 在$ rs我有一个记录集记录
arrWork = array();
arrWork[$rs["Name"]][$rs["Date_shift"]][$rs["type_shift"][$rs["shift"]] += rs["minute_work"];
如你所知,我在1行中创建了数组的所有维度。
在c#中,我必须使用Hashtables,但我必须检查每个级别,我认为管理它的时间非常昂贵。
有没有办法在c#
中简化php数组答案 0 :(得分:1)
很多C#程序员实际上喜欢语言的声明性语法和类型安全性。我不认为有一个完全可以满足您需求的答案。
我试了一下:)
public class ValueOrDictionary : IDictionary<object, ValueOrDictionary>
{
private readonly IDictionary<object, ValueOrDictionary> storage = new Dictionary<object, ValueOrDictionary>();
private object value;
private bool isValue = false;
public ValueOrDictionary this[object key]
{
get
{
if (isValue)
{
throw new InvalidOperationException();
}
ValueOrDictionary subLevel;
if (!storage.TryGetValue(key, out subLevel))
{
subLevel = new ValueOrDictionary();
storage[key] = subLevel;
}
return subLevel;
}
set
{
storage[key] = value;
}
}
public object Value
{
get
{
return value;
}
set
{
this.value = value;
isValue = value != null;
}
}
// ... rest of IDictionary<,> implementation
然后您可以使用以下内容:
ValueOrDictionary arr = new ValueOrDictionary();
arr["a"]["b"].Value = 8;
int myvalue = (int)arr["a"]["b"].Value;
这样每个&#34;级别&#34;在字典中兼作&#34;值容器&#34;。
最后,您可能会在第一次编写应用程序时赢得一些时间,但我认为您将花费更多时间来维护应用程序,因为您的编译器无法再帮助您确定每个值的类型。
如果您坚持使用目前习惯的内容,那么从您的同事或此处获取有关phpc#代码的帮助也会变得更加困难。