C#(结构体_枚举类型)
结构体一般定义在Main函数上面,位于Class下面,作为一个类;一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量。
用法
1)在Main函数外面定义了一个student类型的结构体,在Main主函数中使用:
2)然后为里面的每个元素赋值,结构体名+点+结构体里面变量名称=值。
3)赋值之后完成之后进行打印。
struct Student
{//定义一组变量
public int no;
public string name;
public string sex;
public Score fen;
}
Student st = new Student();//这句是在Main函数里定义了一个名为st的student 类型的结构体。并初始化结构体
st.no = 20001; //赋值
st.name = "张三";
st.sex = "男";
st.score = 80;
//将每个人的信息放进ArrayList集合中
//面向对象思想
ArrayList al = new ArrayList();
al.Add(st);
Student st1 = new Student();
st1.no = 20002;
st1.name = "李四";
st1.sex = "女";
st1.score = 60;
al.Add(st1);
ArrayList al = new ArrayList();
Console.Write("请输入班级人数:");
int a = int.Parse(Console.ReadLine());
for (int i = 0; i < a; i++)
{
Student st = new Student();
Console.Write("请输入第{0}个学生的学号:", i + 1);
st.no = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个学生的姓名:", i + 1);
st.name = Console.ReadLine();
Console.Write("请输入第{0}个学生的性别:", i + 1);
st.sex = Console.ReadLine();
Console.Write("请输入第{0}个学生的分数:", i + 1);
st.score = double.Parse(Console.ReadLine());
al.Add(st);
}
查看3号索引位置的学生的所有信息
接收出来的时候需要接受成添加时候的数据类型(Student)
Student st1 = (Student)al[3];
Console.WriteLine(st1.no);
Console.WriteLine(st1.name);
Console.WriteLine(st1.sex);
Console.WriteLine(st1.score);
Console.ReadLine();
结构体内部可以直接放置另一个结构体的数据类型
例如:struct Student
{
public int no;
public string name;
public string sex;
public Score fen;
}
struct Score
{
public double yu;
public double shu;
public double ying;
}
练习:
定义一个结构体,里面具有姓名、语文成绩、数学成绩、英语成绩
将每个人的信息放入结构体中
将所有人的信息添加进集合中
求语文分数的总分
求数学分数的平均分
查看英语分数的两个最高分的人的所有信息(姓名、语分、数分、英分)
要求使用冒泡排序,只有一个集合
struct stu
{
public string name;
public double yu;
public double shu;
public double ying;
}
ArrayList al = new ArrayList();
stu s = new stu();
Console.Write("请输入班级人数:");
int n = int.Parse(Console.ReadLine());
double ysum = 0;
double ssum = 0;
for (int i = 0; i < n; i++)
{
Console.Write("请输入第{0}个同学的姓名:", i + 1);
s.name = Console.ReadLine();
Console.Write("请输入 第{0}个同学的语文成绩:", i + 1);
s.yu = double.Parse(Console.ReadLine());
ysum += s.yu;
Console.Write("请输入 第{0}个同学的数学成绩:", i + 1);
s.shu = double.Parse(Console.ReadLine());
ssum += s.shu;
Console.Write("请输入 第{0}个同学的英语成绩:", i + 1);
s.ying = double.Parse(Console.ReadLine());
al.Add(s);
}
Console.WriteLine("语文总分为{0},数学平均分为{1}", ysum, ssum / n);
//排序
for (int i = 0; i < n; i++)
{
stu st1 = new stu();
st1 = (stu)al[i];
for (int j = i + 1; j < n; j++)
{
stu st2 = new stu();
st2 = (stu)al[j];
if (st1.ying < st2.ying)
{
object zhong = al[i];
al[i] = al[j];
al[j] = zhong;
}
}
}
stu st = new stu();
st = (stu)al[0];
Console.WriteLine("英语成绩的最高分是" + st.name + st.ying);
Console.ReadLine();
第二部分 枚举类型
枚举(enum)是值类型的一种特殊形式,它从System.Enum继承而来,并为基础类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个除char 类型外的内置的有符号(或无符号)整数类型(如Byte、Int32或UInt64)。也可以说,枚举类型是一组常量的集合。
1、定义:Enum....{E}
枚举元素的默认基础类型为int。默认情况下,第一个枚举数的值为0,后面每个枚举数的值依次递增1。例如:
enum meiju://枚举是常量的集合,一般冒号后面不指定数据类型
{
one=3, //枚举里面有默认的索引,也可以指定;如索引3,但在控制台中不起作用;
two=6,
three,//用逗号隔开
four=two,//如果等于之前的一个常量,那么就等于这个常量;最后一行的逗号可省略
}
static void Main(string[] args)
{
Console.WriteLine(meiju.one);
Console.ReadLine();
2、用法:
枚举也可以指定数据类型,一般不指定。
在定义枚举类型时,可以选择基类型,但可以使用的基类型仅限于long、int、short和byte。例如:
如: enum meiju:int
C#(结构体_枚举类型)的更多相关文章
- C#语言基础——结构体和枚举类型
结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...
- c# 函数练习;结构体、枚举类型
* 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...
- c# 结构体、枚举类型及函数调用
一.结构体 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 枚举类型和结构体都属于值类型. 二.枚举类型 1.枚举类型之针对字符串,对于索引,无意义2.常量的集合,这些常 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift中的结构体和枚举
Swift 里的结构体非常特殊. 类是面向对象编程语言中传统的结构单元.和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体 ...
- iOS开发——C篇&结构体与枚举
一:结构体与枚举的介绍: 结构体与枚举:是一种存储复杂的数据结构体:是用户自定义的一种类型,不同类型的集合,而数组是相同类型变量的集合. 二:结构体的创建 struct user { char ...
- 关于c#里的集合的,结构体,枚举的定义,解释与应用
那么先写一下 集合 . 集合和数组很相似,数组里的类型是必须同一类型,固定长度.然而集合里的可以是不同类型,不固定长度的.所以集合运用的灵活度要更高一些. 要使用集合,必须先引用命名空间:using ...
- 第四篇 .NET高级技术之结构体及值类型引用类型
结构体 在平时的开发中很少自己去写结构体,他是一种值类型的数据.对于结构,不像类那样存在继承,一个结构体不能从另一个结构或类继承.但是结构体从基类Object继承. 语法: //struct是定义结构 ...
- oc温习七:结构体与枚举
结构体和枚举都是一种存储复杂的数据.结构体是用户自定义的一种类型,不同类型的集合. 1.结构体的创建及使用 定义结构体类型 struct MyDate { int year; int month; i ...
随机推荐
- Java——日期格式
/* * 日期对象和毫秒值之间的转换. * * 毫秒值--->日期对象: * 1.通过Date对象的构造方法new Date(timeMillis) * 2.还可以通过setTime设 ...
- Spring源码学习之:你不知道的spring注入方式
前言 在Spring配置文件中使用XML文件进行配置,实际上是让Spring执行了相应的代码,例如: 使用<bean>元素,实际上是让Spring执行无参或有参构造器 使用<prop ...
- svn tree conflicts 解决方法
svn resolve --accept working -R XXX. 其中XXX为提示冲突的目录.
- dede数据库文件导入失败的可能原因是数据表前缀不同,这里的失败指的是mysql添加了数据,但后台不显示
利用dede提供的数据备份还原功能,还原数据,出现失败的可能原因是数据表前缀不同,改过来就可以了
- Linux-eth0 eth0:1 和eth0.1关系、ifconfig以及虚拟IP实现介绍
eth0 eth0:1 和eth0.1三者的关系对应于物理网卡.子网卡.虚拟VLAN网卡的关系:物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡 ...
- Sublime Text 下配置python
Sublime Text 2作为一款轻量级的编辑器,特点鲜明,方便使用,而且支持多语言. 一.control+B方式 1. 在工具栏点击Preferences,打开Browse Packages.在 ...
- C#学习之初步理解委托、事件、匿名方法和Lambda
最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对 ...
- browser-ua
故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Sup ...
- Win10 64位安装SQL2000(个人版)
默认Win10上是不允许安装SQL2000的,毕竟SQL2000已经是10多年前的老软件了,但是因为它成熟稳定,相比SQL2005,SQL2008R2,SQL2012,SQL2014,体积要小的多,所 ...
- SQLSERVER 脚本转MYSQL 脚本的方法总结
1.MYSQL(版本为5.6)中SQL脚本必须以分号(;)结尾,这点比SQLSERVER要严谨:关键字与函数名称全部大写:数据库名称.表名称.字段名称全部小写. 2.所有关键字都要加上``,比如 St ...