(12)C#枚举,结构
枚举
枚举类型是类似自定义的一个类,类里放着你自己定义的常量,关键字enum。
enum Season{spring,summer,fall,winter}
想用这里的常量的话,首先把变量定义成 Season类型,然后再给它赋值
Season a=Season.fall;
Console.WriteLine(a);//输出结果 fall
枚举类型的每一个常量都对应着一个整数值。默认第一个是0,往后依次加1.
上面的spring相当于0,summer相当于1,fall相当于2,winter相当于3.
Console.WriteLine(int(a));//结果输出 2
默认常量是一个int的值,如果想声明成其他类型加 :数据类型
enum Season:short{spring,summer,fall,winter}
这样做的目的是为了节省内存。short比int占的字节要少。
枚举类型可以定义成8种整数类型的任何一种:byte,sbyte,short,ushort,int,uint,long,ulong.
结构
结构是值类型,数据直接存储在栈上。关键字是struct。不能手动写一个默认的无参构造函数,不然执行程序时会报错。
struct A
{
A()
{
//运行程序时会报错,显示“结构部能包含显式的无参数构造函数”(写完看不出错误,运行时才会报错)
}
}
出错原因:声明的结构始终会帮我们生成一个默认的无参构造函数。(类是只有在没写无参构造函数时才会默认生成)
结构的赋值
结构不能直接给变量赋值,除非加了静态关键字。
struct A
{
public static int x = ;//可以
public int y=; //报错 “结构中不能有实例字段初始值”
}
结构变量的使用
使用srtuct有两种方法:
1、实例化结构
A a=new A();
2、直接创建
A a;
虽然这两种方式创建后使用的字段都在栈上,但他们的区别在于
.用new实例化的会调用构造函数给他里面的字段初始化。
.但直接创建的它里面的字段需要初始化后才能使用
struct A
{
public static int x ;
public int y;
}
class B
{
public static void Main(string[] args)
{
A a=new A();
Console.WriteLine(A.x);// 结果为0
Console.WriteLine(a.y);// 结果为0
}
这里构造函数会为x,y进行初始化。一般默认初始成0、false、null
struct A
{
public static int x = ;
public int y;
}
class B
{
public static void Main(string[] args)
{
A a; //声明A 值类型不需要new
a.y = ;//给y赋值
Console.WriteLine(A.x);//静态直接用 A 结果输出 5
Console.WriteLine(a.y);//输出6
}
因为A是值类型所以可以直接用 A a;但是由于没有调用构造器所以需要自己手动的行进初始化。不然会报错。
几点注意
.虽然结构不能用无参构造函数但是可以有含参的构造函数
.结构不能被继承,也不能当做父类
.结构可实现一个或多个接口
.结构成员不能指定为 abstract、virtual 或 protected
.结构不能定义析构函数
(12)C#枚举,结构的更多相关文章
- C#中常量\枚举\结构及数组的运用
又一天结束了,今天在云和学院学习的知识下面继续来做总结. 一.常量\枚举\结构的运用 理论: 常量:const 类型 常量名 = 常量值 确定数量.确定值的几个取值:东西南北.男女.上中下. 枚举: ...
- C#学习笔记_12_枚举&结构体
12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...
- C#学习笔记12:枚举、结构、数组基础学习
枚举:public enum MyEnum { 值1, 值2, 值3 } Public enum Season { 春, 夏, 秋, 冬 } 枚举的作用:规范用户的输入,枚举可以转换为int类型,可以 ...
- [C语言]进阶|结构类型: 枚举, 结构, 类型定义
--------------------------------------------------------------------- 枚举: // main.c #include <std ...
- 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
- Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
- C语言学习笔记--枚举&结构体
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...
- .Net基础篇_学习笔记_第八天_复杂数据类型(常量/枚举/结构)
1.常量: 声明的常量的语法:const 变量类型 变量名=值;最大的特点就是,声明了常量后,就不能再被重新赋值. 2.枚举 语法:[public] enum 枚举名{ 值1, 值2, 值3, ... ...
- 前端学习笔记2017.6.12 HTML的结构以及xhtml、html、xml的区别
HTML的结构 一个HTML文档可分为几个部分,如下图所示: DOCTYPE部分.head部分和body部分 DOCTYPE部分,这个很重要,可以理解为不同的DOCTYPE意味着不同的html标准,因 ...
随机推荐
- python-使用pip安装第三方库报UnicodeDecodeError: 'utf8' codec can't decode byte 0xcb in position 7: invalid continuation byte 错误解决方案
在python 的安装目录下找到Lib\ntpath.py文件,找到def join(path, *paths):方法,添加如下两行语句: reload(sys) sys.setdefaultenco ...
- Python全栈工程师(列表、拷贝)
ParisGabriel 感谢 大家的支持 你们的阅读评价就是我最好的更新动力 我会坚持吧排版做的越来越好 每天坚持 一天一篇 点个订阅吧 灰常感谢 当个死粉也阔以 Py ...
- ipa和ironic-conductor交互
IPA使用lookup和hearteat机制与Ironic Conductor进行交互,启动时agent给Conductor的vendor_passthru lookup endpoint(地址为/v ...
- Qt(1)
Qt Qt开发图形界面软件,可以跨win.linux.mac平台.移动端,使用c++开发 Qt采用所见即所得的UI设计(UI设计和代码是联动的),GUI界面编辑信号和槽,由开发环境自动生成c++代码, ...
- NYOJ 42 一笔画
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- [学习笔记]Senparc.CO2NET 缓存使用笔记
>笔记1:如果需要调用远程的Redis,那么您需要2步 步骤1: 在项目的web.config文件中配置 <!-- Cache.Redis连接配置 --> <add key=& ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作 http://www.jb51.net/article/76601.htm
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
- Linux下的ACL
ACL理论概述 9位的属主/属组/其他人访问控制系统已经得到证明是强大的,足以满足大多数管理方面的需求. 事实上,在所有非UNIX操作系统上都采用了一种实质上更为复杂的方式来管理对于文件的访问:访问控 ...
- display 垂直居中
/* Center slide text vertically */ display: -webkit-box; display: -ms-flexbox; display: -webkit-flex ...