标签:赋值 string ogr name 情况 app1 collect space rgs
为结构定义默认(无参数)构造函数是错误的。 在结构体中初始化实例字段也是错误的。 只能通过两种方式初始化结构成员:一是使用参数化构造函数,二是在声明结构后分别访问成员。 对于任何私有成员或以其他方式设置为不可访问的成员,只能在构造函数中进行初始化。
如果使用 new 运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。 与类不同,结构的实例化可以不使用 new 运算符。 在此情况下不存在构造函数调用,因而可以提高分配效率。 但是,在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
示例如下:
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { // 初始化: TestStruct testStruct1 = new TestStruct();//方式1 TestStruct testStruct2 = new TestStruct(10, 10);//方式2 // 显示结果: Console.Write("testStruct 1: "); Console.WriteLine("x = {0}, y = {1}", testStruct1.x, testStruct1.y); Console.Write("testStruct 2: "); Console.WriteLine("x = {0}, y = {1}", testStruct2.x, testStruct2.y); // 在不使用 new 运算符的情况下创建 testStruct 对象: TestStruct testStruct3; testStruct3.x = 11; testStruct3.y = 12; Console.Write("testStruct 3: "); Console.WriteLine("x = {0}, y = {1}", testStruct2.x, testStruct2.y); // 控制台保持打开. Console.WriteLine("任意键继续."); Console.ReadKey(); /* 输出: testStruct 1: x = 0, y = 0 testStruct 2: x = 10, y = 10 testStruct 3: x = 11, y = 12 */ Console.ReadLine(); } } public struct TestStruct { //public int z = 10;//错误 在结构体中初始化实例字段是错误的 public int x, y; public TestStruct(int p1, int p2) { x = p1; y = p2; } } }
标签:赋值 string ogr name 情况 app1 collect space rgs
原文地址:https://www.cnblogs.com/dearbeans/p/14198974.html