C#学习笔记_结构体

结构体(struct)是一种值类型,通常用于封装一些小型变量数据。在C#面向对象编程学习时,可以将结构体暂时理解成一种简单的对象。

结构体语法

一、声明结构体

声明结构体语法如下:

public struct 结构体
{
    public 数据类型 变量名;
    public 数据类型 变量名;
    public 数据类型 变量名;
    ......
}

其中,public为访问修饰符,限定了结构体被访问的权限;struct关键字用于声明结构体。

例如,想要用一个结构体封装人员信息,例如姓名、证件号、性别等,可以这样创建结构体:

public struct person
{
    public string name;    //姓名
    public string id;    //证件号
    public string gender;    //性别
    public int age;    //年龄
}

二、使用结构体

1、创建结构体类型的变量:

结构体类型 结构体变量名 = new 结构体类型();

例如,结构体person,可以用于封装人员信息,现在想要封装John的信息,则创建John变量如下:

person John = new person();

2、结构体赋值:

结构体变量名.变量名 = 值;

例如,还是上面例子,John是男性,34岁,证件号Q123456,则需要如下操作:

John.name="John";
John.id="Q123456";
John.gender="male";
John.age=34;

3、结构体取值

结构体变量名.变量名

 上面要输出John各种信息,则通过下面语句实现:

Console.WriteLine(John.name+John.id+John.gender+John.age);

此处只是为了介绍语法,输出结果并未排版:

 JohnQ123456male34

可见,John的个人信息成功逐个输出。

结构体成员函数(初试public)

结构的数据成员中还可以包含函数。例如上面例子,希望可以通过函数直接对结构体中各个变量赋值,或者通过函数直接输出个人信息,则可以通过如下代码实现:

        //define struct person
        public struct person
        {
            string name;    //姓名
            string id;    //证件号
            string gender;    //性别
            int age;    //年龄

            /// 
            /// 用于对结构person变量中各个变量赋值。
            /// 
            /// 用于赋值person中变量name姓名
            /// 用于赋值person中变量name姓名
            /// 用于赋值person中变量name姓名
            /// 用于赋值person中变量name姓名
            public void informationGet(string _name,string _id,string _gender,int _age)
            {
                
                name = _name;
                id = _id;
                gender = _gender;
                age = _age;
            }

            /// 
            /// 用于输出结构体person变量中各个变量信息。
            /// 
            public void informationPrint()
            {
                Console.WriteLine("name={0}\nid={1}\ngender={2}\nage={3}",name,id,gender,age);
            }
        }

而调用上述函数,可以将信息录入或输出:

person John = new person();
John.informationGet("John", "Q123456","male",34);   //录入John信息
John.informationPrint();    //输出John信息

此时输出结果:

name=John

id=Q123456

gender=male

age=34

此时可以注意,在声明结构体person时,可见到其中各个变量声明并没有使用public。假如尝试在Main函数中直接访问John中各个变量值,会发现程序报错,而修改加上public后,相关变量就可以访问了。相似的,假如试图将几个成员函数前public删除,同样会发现函数再不能被使用。

如果调用该结构的代码块,想要访问结构中的数据成员,那么需要使用关键字public限定数据成员。通常public关键字并不用在结构的数据变量上,而是用在结构函数前,因为这样做,可以保证其他代码块不直接接触成员变量,避免误操作。而仅使用函数,可以限定操作的过程。提升代码的安全性。在上面的代码中,只能通过成员函数informationGet来操作结构中数据成员。

以上范例完整代码如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace code
{
    class Program
    {
        //define struct person
        public struct person
        {
            string name;    //姓名
            string id;    //证件号
            string gender;    //性别
            int age;    //年龄

            /// 
            /// 用于对结构person变量中各个变量赋值。
            /// 
            /// 用于赋值person中变量name姓名
            /// 用于赋值person中变量name姓名
            /// 用于赋值person中变量name姓名
            /// 用于赋值person中变量name姓名
            public void informationGet(string _name,string _id,string _gender,int _age)
            {
                
                name = _name;
                id = _id;
                gender = _gender;
                age = _age;
            }

            /// 
            /// 用于输出结构体person变量中各个变量信息。
            /// 
            public void informationPrint()
            {
                Console.WriteLine("name={0}\nid={1}\ngender={2}\nage={3}",name,id,gender,age);
            }
        }

        static void Main(string[] args)
        {
            //use struct person
            person John = new person();
            John.informationGet("John", "Q123456","male",34);   //录入John信息
            John.informationPrint();    //输出John信息
            Console.ReadKey();
        }
    }
}

你可能感兴趣的:(C#学习笔记,学习,笔记,c#)