第一部分 结构体(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、注意,数字不能单独放在枚举里面执行,系统会判错,主要是约束字符串