结构、枚举和数组的区别
结构、枚举和数组的区别
结构、枚举和数组的区别
一、结构
1、定义:结构是一种值类型,并且不需要堆分配。结构的实例化可以不使用new运算符。如果声明一个10000个Point对象组成的数组,为了引用每个对象,则需分配更多内存;这种情况下,使用结构可以节约资源。结构是使用 struct关键字定义的,与类相似,都表示可以包含数据成员和函数成员的数据结构。结构的实例化可以不使用new运算符。
2、结构是值类型:结构类型的变量不能为null;两个结构变量不能引用同一对象
3、结果的举例
struct A
{
public int x; //不能直接对其进行赋值
public int y;
public static string str = null; //静态变量可以初始化
public A(int x,int y) //带参数的构造函数
{
this.x = x;
this.y = y;
Console.WriteLine("x={0},y={1},str={2}", x, y,str);
}
}
class Program
{
static void Main(string[] args)
{
A a =new A(1,2);
A a1 = a;
a.x =10;
Console.WriteLine("a1.x={0}",a1.x);
Console.Read();
}
}
4、构造函数(实例、静态) 但不允许有析构函数
实例构造函数:语言隐式地为每个结构提供一个无参数的构造函数,成员为默认值;
它不能删除和重定义,但可以另外创建,只要它没有参数;调用时,都要使用new运算符
Simple si = new Simple();
Simple s2 = new Simple (5,10);
也可不使用new创建结,但有限制:不能使用数据成员的值,直到显示的设置它
不能调用任何函数成员,直到所有数据成员已经被赋值
Simple s1,s2;
Console.write(s1.x); //编译错误
S2.x = 5;s2.y=10;
Console.write(s2.x); //成功
5、静态构造函数:和类的一样;
在下面两个行为的第一个之前被调用:调用显示声明的构造函数;对结构静态成员的引用
6、结构是隐式密封的,不能派生其它结构,不支持继承
不能用于结构的修饰符有:protected、internal、abstract、virtual
结构本身派生自 System.ValueType,System.ValueType派生 object
7、附加信息:结构可以声明partial结构;
实际上在.NET中预定义简单类型(int、short、long) 都被实现为结构;它可实现接口;
二、枚举
1、枚举类型是派生自System.Enum的一种独特的值类型,用于声明一组命名的常数。每种枚举类型均有一种基础类型,此基础类型可以使除char类型以外的任何整型。 枚举元素的默认基础类型为int 默认情况下,第一个枚举元素的值为0,后面每个枚举元素的值依次递增1 。
2、枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举类型。
3、格式:
访问修辞符 enum 枚举名:基础类型
{
枚举成员
}
4、实例
enum Days2 { None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } class MyClass { Days2 meetingDays = Days2.Tuesday | Days2.Thursday; }
三、数组
1、数组是包含若干相同类型元素的一组变量。这些变量都可以通过索引进行访问。数组中的变量称为数组的元素。数组能够容纳元素的数量称为数组的长度。数组的维数即数组的秩。数组中的每个元素都具有唯一的索引与其相对应。数组的索引从零开始。
2、数组是对象:数组实例是从System.Array继承的对象;数组是引用类型;根据数组元素类型有:值类型数组和引用类型数组
3、一维数组和矩形数组:
声明: int [,,] arr; 不允许维度长度 实例化:int [,,] arr = new int[3,4,5];
显示类型数组:
int [] intarr = new int[] {10,20,30,40}; int [] intarr = {10,20,30,40};
int [,] intarr = new int[,] {{10,1},{2,4},{3,4}}; int [,] intarr = {{10,1},{2,4},{3,4}};
逗号用作元素和分组之间的分隔符; 逗号不在左或右花括号之间使用; 最后一个为”元素“,其它为”分组“
隐式类型数组
string[] sArr = new string[] {“ad”,”bd”}; var sArr = new [] {“ad”,”bd”};
4、交叉数组
声明:int arr[][]; 实例化:int arr[][] = new int[3][,];
arr[0]= new int[,] {{1,2}, {100,200} }; arr[1]= new int[,] {{4,5,6}, {40,50,60} }; arr[2]= new int[,] {{8,9,10,11},{11,22,33,44}};
- jvm内存结构及运行原理(详解JVM系列之内存模型)
- vue实现树形结构菜单(vue递归实现三级菜单)
- 结构、枚举和数组的区别
- python中if判断数据类型(基于python if 判断选择结构的实例详解)
- python元组和列表的定义(Python基本数据结构与用法详解列表、元组、集合、字典)
- python3 for循环怎么用(Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解)
- mysql 建表命令注释(mysql alter table命令修改表结构实例详解)
- vue树形表格内容太长(VUE 无限层级树形数据结构显示的实现)
- html5基本结构图(HTML5中的网络存储实现方式)
- html5自定义结构指令(浅析HTML5 meta viewport参数)
- 织梦dede怎么获取当前文档的网址(比较详细全面的织梦DEDECMS目录结构说明)
- sqlserver改表结构不允许(SQL Server阻止保存修改表结构的解决方法)
- python分支的描述(学习python分支结构)
- laravel提取数据库的字段(Laravel创建数据库表结构的例子)
- python数据结构全攻略(详解python数据结构和算法)
- html5基本结构图解(html5简介及新增功能介绍)
- 这里输入关键词(怎么输入关键词搜索)
- 34岁的舒畅,就这样走到了末路,不知会不会后悔15年前的草率决定(就这样走到了末路)
- 不走心的古装造型 舒畅 毁容式 出演,萧蔷雷出新高度(不走心的古装造型)
- 嘉南传 第22集(嘉南传第22集)
- 哪版孙悟空最萌 黄渤躺萌了(哪版孙悟空最萌)
- 融入小人物的喜怒哀乐,黄渤饰演的角色为什么让人观看时欲罢不能(融入小人物的喜怒哀乐)
热门推荐
- python分词操作(Python英文文本分词无空格模块wordninja的使用实例)
- canvas设置点击(Canvas高级路径操作之拖拽对象的实现)
- vs和sql安装顺序(VS2015安装之后加装Sql server2014详细步骤)
- sql建立视图步骤(SQL 创建、更新和删除视图的方法)
- JS匿名函数的用法
- dedecms采集插件(dedecms 软件下载模块加入flashget快车下载代码)
- mongodb中mapreduce实例
- python基础教程常用函数整理(Python基础之函数的定义与使用示例)
- 登录宝塔面板无法显示网站(宝塔bt面板如何设置自定义404错误页面)
- docker容器解决隔离的技术(Docker+selenium实现自动化健康报备的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9