c# struct的使用
2021-01-01 15:29
标签:赋值 string ogr name 情况 app1 collect space rgs 为结构定义默认(无参数)构造函数是错误的。 在结构体中初始化实例字段也是错误的。 只能通过两种方式初始化结构成员:一是使用参数化构造函数,二是在声明结构后分别访问成员。 对于任何私有成员或以其他方式设置为不可访问的成员,只能在构造函数中进行初始化。 如果使用 new 运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。 与类不同,结构的实例化可以不使用 new 运算符。 在此情况下不存在构造函数调用,因而可以提高分配效率。 但是,在初始化所有字段之前,字段将保持未赋值状态且对象不可用。 示例如下: c# struct的使用 标签:赋值 string ogr name 情况 app1 collect space rgs 原文地址:https://www.cnblogs.com/dearbeans/p/14198974.htmlusing 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;
}
}
}