结构、枚举和数组的区别
结构、枚举和数组的区别
结构、枚举和数组的区别
一、结构
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}};
- linux目录操作功能(Linux 目录结构详细介绍)
- laravel数据库查询(Laravel获取所有的数据库表及结构的方法)
- python中if判断数据类型(基于python if 判断选择结构的实例详解)
- vue实现树形结构菜单(vue递归实现三级菜单)
- html5基本结构图解(html5简介及新增功能介绍)
- html5游戏新手引导开发(使用数据结构给女朋友写个Html5走迷宫游戏)
- mysql 建表命令注释(mysql alter table命令修改表结构实例详解)
- innodb运行内存(详细了解 InnoDB 内存结构及其原理)
- mysql与oracle体系结构(详解MySQL实时同步到Oracle解决方案)
- python实现的数据结构(Python嵌套式数据结构实例浅析)
- JavaScript将具有父子关系的数据转化成树形结构,供tree控件使用
- sqlserver复制表结构及数据到新表(SQL SERVER 表与表之间 字段一对多sql语句写法)
- 织梦dedecms开启付费授权(织梦dedeCMS二次开发文档手册 程序目录详解以及数据表结构字段)
- laravel提取数据库的字段(Laravel创建数据库表结构的例子)
- python数据结构全攻略(详解python数据结构和算法)
- python的几种数据结构(python中的数据结构比较)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
- 蓝天代表什么(蓝天代表什么生肖)
- 今天要吃什么(今天要吃什么菜)
- 营养餐是什么(学校营养餐是什么)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
热门推荐
- threejs 三维可视化(three.js模拟实现太阳系行星体系功能)
- python爬虫怎么设置代理ip(python爬虫简单的添加代理进行访问的实现代码)
- 60个常用的css布局(CSS布局基础BFC)
- dedecms内容页代码(DEDECMS生成HTML时提示 DedeTag Engine Create File False的解决方法)
- vue身份验证(详解vue身份认证管理和租户管理)
- 云服务器与服务器的区别(云服务器与网站空间区别在于什么)
- 云服务器怎么优化(云服务器空间不足如何解决?)
- h5微信手机端debug模式(iOS微信H5页面橡皮回弹效果的踩坑记录)
- linq中join用法
- 面试时问如何理解团队合作该怎么回答
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9