结构体,枚举类型

Posted 绯色梧桐绯色月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体,枚举类型相关的知识,希望对你有一定的参考价值。

第一部分 结构体(struct)

结构类型是用户自己定义的一种类型,它由其他类型组合而成的,可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。结构在几个重要方面不同于类;结构为值类型而不是引用类型,而且结构不支持继承。

用结构的主要思想是用于创建小型的对象,如 Point 和 FileInfo 等等。这可以节省内存,因为没有如类对象所需的那样有额外的引用产生。例如,当声明含有成千上万个对象的数组时,这会引起极大地差异。

结构体是一个变量组,将一组变量放在一起,其实就是一个自定义的集合,里面可以包含各种类型的数据,用法和集合一样。

1.定义:

结构体一般定义在Main 函数上面,位于Class下面,作为一个类;一般情况Struct 定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public 表示共用变量。

格式:

struct +结构体的名称

{

 public int +变量名;

public string +变量名;

public int +变量名;

}

以上就是定义一个结构体的格式,里面包含许多数据类型,如整形int,字符串string,带小数点decimal等;

如果结构体定义在Main函数中,再能在main函数中使用,参数前面加上public代表共用变量。

格式:

struct student

{

public int no;

public string name;

public int sum;

}

2、用法

1)在main函数外面定义一个struct类型的结构体,在main主函数中使用;

2)然后为里面的每个元素赋值,结构体名+点+结构体里面变量名称=值。

3)赋值完成之后进行打印。

student lch=new student ();//这句是在main函数里定义了一个名为lch的student类型的结构体。

{

 lch.no=1;

.

.

.

.

}

要点:定义一个jiegouti类型的结构体,有三个结构变量,在主函数中定义一个参数接收结构变量,然后输出name,返回一个字符串。

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

namespace 结构体练习
{
    class Program
    {
        struct jiegouti
        {
            public int xuehao;
            public string name;
            public double chengji;
        }

        static void Main(string[] args)
        {
            //使用结构体
            //输入人数
            //输入姓名,成绩
            //然后存到结构体,放到集合,然后打印
            ArrayList al = new ArrayList();
            Console.WriteLine("请输入学生人数");
            int a = int.Parse(Console.ReadLine());
            for (int i = 0; i < a; i++)
            {
                jiegouti jgt = new jiegouti();
                Console.Write("请输入学生学号:");
                jgt.xuehao = int.Parse(Console.ReadLine());
                Console.Write("请输入学生姓名:");
                jgt.name = Console.ReadLine();
                Console.Write("请输入学生成绩:");
                jgt.chengji = double.Parse(Console.ReadLine());
                //al.Add(jgt.xuehao);
                //al.Add(jgt.name);
                //al.Add(jgt.chengji);
                al.Add(jgt );
            }
            Console.WriteLine("输入完毕,请按回车键查看!");
            Console.ReadLine();
            //for (int i = 0; i <= 4 * a - 4; i++)
            //{
            //    Console.WriteLine(al[i]);
            //}
            for (int i = 0; i < a; i++)
            {
                jiegouti jgt=(jiegouti )al[i];
                Console.WriteLine("第{0}个学生的学号是{1},姓名是{2},成绩是{3}",(i+1) ,jgt.xuehao ,jgt.name,jgt.chengji );

            }
            Console.ReadLine();
        }
    }
}

3、结构体类型元素包含结构体类型

第二部分 枚举类型

枚举(enum)是值类型的一种特殊形式,它从system.enum 继承而来,并为基础类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个除了char类型外的内置的有符号或者(或无符号)整数类型(如byte、int32和uint64).也可以说,枚举类型时一组常量的集合。

1、定义:enum...[E]

枚举类型的默认基础类型为int。默认情况下,第一个枚举数的值为0,后面每个枚举数的值一次递增1.

class Program
    {
        enum meiju:int //枚举是常量的集合,一般冒号后面不指定数据类型
        {
            one=2,//枚举里面有默认的索引,也可以指定;如索引2,但在控制台中不起作用
            two=1,
            three,//用逗号隔开
            four,//如果等于之前的一个常量,那么就等于这个常量;最后一行的逗号可省略
        }
        
        static void Main(string[] args)
        {
            Console.WriteLine(meiju.one);
            Console.WriteLine(meiju.two);
            Console.WriteLine(meiju.three);
            Console.WriteLine(meiju.four);
            Console.WriteLine("索引号");
            Console.WriteLine((int)meiju.one);
            Console.WriteLine((int)meiju.two);
            Console.WriteLine((int)meiju.three);
            Console.WriteLine((int)meiju.four);
            Console.ReadLine();
        }
    }

2、用法

枚举类型可以指定数据类型,也可以不指定

在定义枚举类型时,可以选择基类型,但可以使用的基类型仅限于 long,int ,short ,和byte

3、注意,数字不能单独放在枚举里面执行,系统会判错,主要是约束字符串

以上是关于结构体,枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

自定义类型:结构体,枚举,联合

自定义类型详解(结构体,枚举,联合体)

结构体共用体枚举博客转载

c语言篇 +自定义类型(枚举联合结构体)以及位段

结构体公用体枚举

结构体 枚举类型