c# - Unity C# 中的 IEnumerable 问题?
问题描述
我正在统一制作一个简单的纸牌游戏,遵循教程(我是统一的初学者),一个简单的 IEnumerable 有一个非常奇怪的错误。每当它被调用时,它都会返回一个错误:
NullReferenceException: Object reference not set to an instance of an object
Deck+<GetCards>c__Iterator0.MoveNext () (at Assets/Scripts/Deck.cs:11)
DeckView.ShowCards () (at Assets/Scripts/DeckView.cs:21)
DeckView.Start () (at Assets/Scripts/DeckView.cs:16)
我已经查看了这个错误,并且对编程有一些了解,但我似乎无法理解为什么会发生这种情况。这里有什么问题?
这是有问题的迭代器:
public IEnumerable<int> GetCards(){
foreach (int i in cards)
{
// DEBUG
print (i);
yield return i;
}
}
'cards' 是 List 类型,我从这里调用它:
foreach (int i in deck.GetCards()) {
// some code
}
这是我的设置代码,第 2-6 行应该防止“卡片”为空。这有什么问题吗?
public void Shuffle (){
if (cards == null) {
cards = new List<int> ();
} else {
cards.Clear ();
}
for (int i = 0; i < 40; i++) {
cards.Add (i);
}
int n = cards.Count;
while (n > 1) {
n--;
int k = Random.Range (0, n + 1);
int temp = cards [k];
cards [k] = cards [n];
cards [n] = temp;
}
}
void Start () {
Shuffle ();
print (GetCards ());
}
我在这里犯了什么错误?
解决方案
推荐阅读
- node.js - 套接字 io 在服务器端(GKE)没有连接事件的情况下连接
- python - Python:按组计算数据帧中的特定出现次数
- vim - vim-latex 和折叠
- python - 使用嵌套字典和自定义参数创建 MySQL 插入查询
- javascript - 如何准确测量 JavaScript 中排序函数所花费的时间
- java - 使用retrofit2解析来自openweathermap的数据(使用纬度和经度)
- xamarin - Xamarin iOS 构建错误:解压本地框架失败
- apache-arrow - 如何将 Java 异常从箭头飞行服务器传递到客户端?(都使用 Java 库)
- ios - 如何修复 TextField 绑定
在 SwiftUI 中显示和编辑 - reactjs - 使用 async/await 在 useEffect 内的 try catch 块中未定义数据,但在切换到 Promises 时有效