在C#中为统一创建多个列表
尝试在c#中创建一个嵌套列表,该列表可以从unity中的json文件中获取数据 它现在给了我这个错误在C#中为统一创建多个列表,c#,json,unity3d,C#,Json,Unity3d,尝试在c#中创建一个嵌套列表,该列表可以从unity中的json文件中获取数据 它现在给了我这个错误 错误CS1061:'List'不包含'decision'的定义,并且找不到接受'List'类型的第一个参数的可访问扩展方法'decision'。 我想访问MyDecision列表中的outcome1数组,但我最多只能访问它 void Start() { CardData CardData=新的CardData(); cardData.card.decision.outcome1=新的int[]{
错误CS1061:'List'不包含'decision'的定义,并且找不到接受'List'类型的第一个参数的可访问扩展方法'decision'。
我想访问MyDecision列表中的outcome1数组,但我最多只能访问它
void Start()
{
CardData CardData=新的CardData();
cardData.card.decision.outcome1=新的int[]{1,2,3};
}
[可序列化]
私有类CardData
{
公众名单卡;
}
[可序列化]
私密级MyCard
{
公共字符串[]讲话;
公开名单决定;
}
[可序列化]
私有类MyDecision
{
公开结果1;
公开结果2;
}
下面是我想要访问的JSON文件的内容
{
"CardData" : [
{ "Speech" : ["Hi World."],
"Decision":[
{
"Outcome1":[1,0,0],
"Outcome2":[0,1,0]
}
]
},{
"Speech": ["Hello","World"],
"Decision":[
{
"Outcome1":[1,1,0],
"Outcome2":[0,1,1]
}
]
}
]
}
因为这些是列表,您无法以您尝试的方式访问它们。有几个选项,一个是您可以使用递归方法调用,如本问题中的调用: 我将使用的路径是使用ForEach在列表中循环:
cardData
.card.ForEach(card =>
card.decision.ForEach((decision) =>
{
decision.outcome1 = new int[] { 1, 2, 3 };
})
);
这可能有一些缺陷,您可能想添加一些错误检查,但对我来说似乎还可以
您还应该听Pac0,命名是代码可读性的一个重要部分,因此当它是一个列表时,将名称设置为单数会令人困惑。
cardData.card
是一个数组,您正试图访问该数组的一项。您需要使用如下内容:cardData.card[0].decision[0].ourcome1=newint[]{1,2,3}代码>嵌套的列表
”在哪里?我强烈建议使用一些命名约定从其他类型字段/属性中识别列表和数组。示例:使用复数(卡片
,决策
)。