求助:C# 字典 Dictionary 的使用,谢谢!

lsh9982010 2017-04-08 08:52:05
请教:
public class Scene1Com : MonoBehaviour {
//public static Scene1ComMessage Single = null;

Dictionary<int, Scene1Spider> m_spiderDicScript = new Dictionary<int, Scene1Spider>();

}

//蜘蛛
public class Scene1Spider : MonoBehaviour {

public struct SpiderState
{
public string name;
}
}


//蜘蛛出生
public class Scene1SpiderBorn : MonoBehaviour {

public GameObject m_spiderPrefab = null; //m_spiderPrefab 实体是挂有 Scene1Spider 类的
private int m_nameID = 0;

if ( (Input.GetKeyDown(KeyCode.A))
{
GameObject m_bornSpider = Instantiate(m_spiderPrefab)

m_nameID ++;

Scene1Spider bornSpider = m_bornSpider.GetComponent<Scene1Spider>();

Scene1Com.Single.GetSpiderDicScript().Add(m_nameID, bornSpider);
}
}

问题是:
Scene1Spider m_scene1Spider = Scene1ComMessage.Single.GetSpiderDicScript().Values[0];

编译提示:
Error CS0021: 无法将带 [] 的索引应用于“System.Collections.Generic.Dictionary<string,Scene1Spider>.ValueCollection”类型的表达式 (CS0021) (Assembly-CSharp)


我这是哪里错了啊?

谢谢!
...全文
329 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42072319 2019-04-19
  • 打赏
  • 举报
回复
楼上一堆跟风的,显得自己很厉害吗,你们都没有遇到过这种问题,或者说,你们根本不知道如何解答,xuggzu兄弟的解答就没问题,至少他遇到过或者他懂
xuggzu 2017-04-08
  • 打赏
  • 举报
回复
仔细看了下楼主代码,发现一团混乱,你敲“.”出不来提示也很正常,先把你的代码搞整齐搞对再说。
lsh9982010 2017-04-08
  • 打赏
  • 举报
回复
.ElementAt(0)是方法,不是属性。你敲了"."后有提示。 还是 没有 明白啊 我敲 . 后面没有 ElementAt 提示啊 谢谢!
xuzuning 2017-04-08
  • 打赏
  • 举报
回复
Scene1ComMessage.Single.GetSpiderDicScript() 得到的是 Dictionary<int, Scene1Spider> 你只能 m_scene1Spider[键] 这样访问,或者按值查找
xuggzu 2017-04-08
  • 打赏
  • 举报
回复
.ElementAt(0)是方法,不是属性。你敲了"."后有提示。
lsh9982010 2017-04-08
  • 打赏
  • 举报
回复
没有 elementat(0) 这个属性 啊?
xuggzu 2017-04-08
  • 打赏
  • 举报
回复
getspiderxxx().elementat(0).value
lsh9982010 2017-04-08
  • 打赏
  • 举报
回复
public class Scene1Com : MonoBehaviour { //public static Scene1ComMessage Single = null; Dictionary<int, Scene1Spider> m_spiderDicScript = new Dictionary<int, Scene1Spider>(); //得到 蜘蛛动态脚本 public Dictionary<string, Scene1Spider> GetSpiderDicScript() { return m_spiderDicScript; } } 问题是: Scene1Spider m_scene1Spider = Scene1ComMessage.Single.GetSpiderDicScript().Values[0]; 编译提示: Error CS0021: 无法将带 [] 的索引应用于“System.Collections.Generic.Dictionary<string,Scene1Spider>.ValueCollection”类型的表达式 (CS0021) (Assembly-CSharp) 我这是哪里错了啊? 谢谢!
lsh9982010 2017-04-08
  • 打赏
  • 举报
回复
谢谢,可以了!!
xuggzu 2017-04-08
  • 打赏
  • 举报
回复
Dictionary.ElementAt()方法是System.Linq对IEnumarialble的扩展方法,必须引用:using System.Linq; 我用的是vs2010,新建项目,缺省都会引用它,其它版本的vs不清楚了。 如果楼主代码搞好后还没找到此方法,就引用下它就行了:using System.Linq;
timmitsamin 2017-04-08
  • 打赏
  • 举报
回复
楼主这代码太混乱了,建议先梳理一下,你这样靠猜去找方法属性不怎么靠谱
xuzuning 2017-04-08
  • 打赏
  • 举报
回复
Dictionary 没有 ElementAt 方法
lsh9982010 2017-04-08
  • 打赏
  • 举报
回复
Scene1ComMessage.Single.GetSpiderDicScript().ElementAt(0). d:\Magic Adventure\Assets\Script\Game\Scene1\SupplementSpider.cs(51,51): Error CS1061: “System.Collections.Generic.Dictionary<string,Scene1Spider>”不包含“ElementAt”的定义,并且找不到可接受类型为“System.Collections.Generic.Dictionary<string,Scene1Spider>”的第一个参数的扩展方法“ElementAt”(是否缺少 using 指令或程序集引用?) (CS1061) (Assembly-CSharp)
  • 打赏
  • 举报
回复
字典是没有序号的,没有顺序,这样就好理解了

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧