(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标准,因 ...
随机推荐
- Erlang OTP设计原则Gen_Fsm行为[转]
转自: http://www.cnblogs.com/yourihua/archive/2012/05/13/2497776.html 1. Fsm 称为 有限状态机,举个例子,游戏中的怪物称为NPC ...
- java和c/c++
写c/c++的人,羡慕java可以自己管理内存 写java的人,羡慕c/c++没有gc问题
- Windows添加自定义服务、批处理文件开机自启动方法
[Windows 添加自定义服务方法]: 1.使用Windows服务工具instsrv.exe与srvany.exe: 参考:https://wenku.baidu.com/view/44a6e6f8 ...
- bitbucket相关操作
常见命令: git checkout -b develop master 创建Develop分支的命令 git checkout master 切换到Master分支 git merge --no-f ...
- Vue 使用Spread.js没有层级关系(隐藏与显示)
Vue 使用Spread.js没有层级关系(隐藏与显示) 1.vue会给元素加一个监控属性.去掉 spread.js没有层级关系过半是column中值的问题
- nginx教程全集汇总
Nginx基础1. nginx安装:httpwww.ttlsa.comnginxnginx-install-on-linux2. nginx 编译参数详解(运维不得不看):http://www.t ...
- ls目录结构
命令ls ls -l = ll -l 详细信息-a 查看隐藏的文件或目录-d 只看目录本身,不列出目录下面的文件和目录 一起使用一般 ls -ld-t 以时间先后排序-i 显示文件节点-h 显示字节大 ...
- BZOJ 1014 [JSOI2008]火星人prefix | Splay维护哈希值
题目: 题解: #include<cstdio> #include<algorithm> #include<cstring> typedef long long l ...
- 【POJ 2752 Seek the Name, Seek the Fame】
Time Limit: 2000MSMemory Limit: 65536K Description The little cat is so famous, that many couples tr ...
- 7月12号day4总结
今天学习过程和总结 封装JDBC在src/main/java下com.neuedu下utils建立JDBCUilt.java 进行封装,基于框架的开发要么继承父类要么实现接口 一个方法里只能有一个动态 ...