我需要在C#中实现ActionScript3中的以下结构:
objectArray.push({name:"Stx10",category:123 , isSet:false, isEmpty:true});
以后我可以像这样访问数组中的对象:
String name =objectArray[i].name
所以我自然而然地关于C Sharp Hash Tables但只允许一个Key - >价值插入。我无法相信.NET框架没有解决这样的问题...... 任何帮助将不胜感激!
答案 0 :(得分:2)
如果您只是按照示例中的索引访问元素,那么您不需要散列访问权限,只需使用List<T>
。
我会将您的信息封装成这样的类型:
class Thing {
public string Name {get; set;}
public int Category {get; set;}
public bool IsSet {get; set;}
public bool IsEmpty {get; set;}
}
然后:
objectList.Add(new Thing{Name="Stx10", Category=123, IsSet=false, IsEmpty=true})
// ...
string name = objectList[i].Name;
答案 1 :(得分:2)
在我看来,你正在将自定义类型推送到数组。
使用IList将为您提供一种快速添加方法,您可以在其中传递您键入的新对象,例如:
IList<MyType> myCollection = new List<MyType>();
myCollection.Add(new MyType{
Name = "foo",
Category = "bar",
IsSrt = true,
IsEmpty = true
});
<强>更新强>
根据Henk对Porges答案的评论,添加一些额外的价值,这是一种使用动态类型做同样事情的方法,因此无需自定义类型:
IList<dynamic> myCollection = new List<dynamic>();
myCollection.Add(new {
Name = "foo",
Category = "bar",
IsSet = true,
IsEmpty = true});
答案 2 :(得分:0)
不要忘记
var d=new Dictionary<string, object>();
你的意图是什么?