C#列出<object>到Unity3d </object>中的IList强制转换错误

时间:2012-03-29 16:21:26

标签: c# unity3d

iPhone 的Unity3d项目中,我遇到了以下问题:
将类型为Count的对象转换为List<object>IList方法后,ToString()属性返回无效值。

请检查这个简单的Unity C#脚本:

public class ListCountTest : MonoBehaviour {
  void Start () {
    try {
      SimpleCountTest();
      SimpleCountTest();
    }
    catch (Exception e) {
      ConsolePrintln(e.ToString());
    }
  }

  private void SimpleCountTest() {
    ConsolePrintln("---\nSimpleCountTest");
    IList firstList = new List<object>();

    firstList.Add(1);
    firstList.Add(2);

    ConsolePrintln("firstList.Count = " + firstList.Count);
    ConsolePrintln("firstList.ToString() = " + firstList.ToString());
    ConsolePrintln("firstList.Count = " + firstList.Count);

    IList secondList = new List<object>();

    secondList.Add(1);
    secondList.Add(2);

    ConsolePrintln("secondList.Count = " + secondList.Count);
    ConsolePrintln("secondList.ToString() = " + secondList.ToString());
    ConsolePrintln("secondList.Count = " + secondList.Count);
  }

  public void ConsolePrintln(string text) {
    UnityEngine.Debug.Log(text);
  }
}

这是一个输出:

---
SimpleCountTest
firstList.Count = 2
firstList.ToString() = System.Collections.Generic.List`1[System.Object]
firstList.Count = 2
secondList.Count = 0
secondList.ToString() = System.Collections.Generic.List`1[System.Object]
secondList.Count = 0

---
SimpleCountTest
firstList.Count = 0
firstList.ToString() = System.Collections.Generic.List`1[System.Object]
firstList.Count = 0
secondList.Count = 0
secondList.ToString() = System.Collections.Generic.List`1[System.Object]
secondList.Count = 0

在调查期间,我发现如果我删除了firstList.ToString()secondList.ToString()来电,那么一切都会正常运作。

有时在调查此问题时,我在此处描述了另一个:Invalid behavior of C# code while using IList in Unity3d on iOS,所以我认为它们可以相关。

我认为此问题可能与完整的编译器模式有关,因为在 Android 上,此代码运行良好。

请注意,此问题很容易重现。我几乎一直在iPod 4(iOS 5.1),iPhone 4s(iOS 5.0.1),iPod 4(iOS 4.1)上复制它。但是你可能仍需要多次运行才能重现 我使用的是Unity 3.5.0b6,许可证类型:Unity,iPhone,Android。 Xcode 4.2.1。

有什么想法可能会发生吗?

提前致谢!

0 个答案:

没有答案