/// <summary> /// 测试struct与null的关系 /// </summary> private void TestStructNull() { //SimpleTestStruct strcutNull = null; // Assets/StructAndClass/StructAndClass.cs(98,33): error CS0037: Cannot convert null to `SimpleTestStruct' because it is a value type // SimpleTestStruct simple = new SimpleTestStruct(); // simple = null; 不能赋空值, 报错同上 //SimpleTestStruct simple; //simple = null; 不能赋空值, 报错同上 SimpleTestStruct?strcutNull = null; // V struct 赋空值的正确做法 Debug.Log(strcutNull.ToString()); // 可以打印,但里面什么也没有 //if(strcutNull == null) //{ // 可以赋空值,但是不能判空? // Assets / StructAndClass / StructAndClass.cs(99, 12): error CS0037: Cannot convert null to `SimpleTestStruct' because it is a value type //} strcutNull = new SimpleTestStruct(); Debug.Log(strcutNull.ToString()); // 默认赋值 strcutNull = null; Debug.Log(strcutNull.ToString()); // 可以再次赋空值 // TODO 测试strcutNull大小 }
/// <summary> /// 测试struct的构造函数 /// </summary> private void TestStructConstructer() { TestStruct testConstructor; // 结构将不会被初始化,但是也不能访问。 //PrintTestStruct(testConstructor, "no new testConstructor"); // Assets/StructAndClass/StructAndClass.cs(80,19): error CS0165: Use of unassigned local variable `testConstructor' testConstructor = new TestStruct(); //PrintTestStruct(testConstructor, "new testConstructor"); // 尚未初始化testClass // NullReferenceException: Object reference not set to an instance of an object // estStruct.ToString()(at Assets / StructAndClass / StructAndClass.cs:193) // StructAndClass.PrintTestStruct(TestStruct info, System.String desc)(at Assets / StructAndClass / StructAndClass.cs:136) // StructAndClass.TestValueStruct()(at Assets / StructAndClass / StructAndClass.cs:83) // StructAndClass.Start()(at Assets / StructAndClass / StructAndClass.cs:15) testConstructor = new TestStruct(new TestClass(100)); PrintTestStruct(testConstructor, "new testConstructor TestClass Param"); SimpleTestStruct simple = new SimpleTestStruct(); Debug.Log(simple.ToString()); // 默认赋值 }