c# struct的使用

2021-01-01 15:29

阅读:460

标签:赋值   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;
        }
    }
}

c# struct的使用

标签:赋值   string   ogr   name   情况   app1   collect   space   rgs   

原文地址:https://www.cnblogs.com/dearbeans/p/14198974.html


评论


亲,登录后才可以留言!