C#是强类型语言,因此每个变量和对象都必须具有声明类型。数据类型可描述为内置数据类型(如int或char),用户定义数据类型(如class或interface)。数据类型还可以定义为值类型(用于存储值),引用类型(用于存储对实际数据的引用)。

值类型

值类型的内容存储在堆栈分配的内存中,如果一个变量是使用基本的内置数据类型之一或用户定义的结构进行声明的,则该变量为值类型。但string数据类型除外,它是引用类型。C#值类型分为简单类型,结构类型和枚举类型。

1.简单类型

C#提供了一组已经定义好的简单类型,分为整型,布尔类型,字符类型和实数类型。

2.结构类型

C#中的结构与类相似,但缺乏某些功能,例如继承。另外,由于结构是一个值类型,因此通常创建结构要比创建类的速度快。

在程序设计中,经常把一组相关的信息放在一起,。把一系列相关的变量组成一个单一的实体,这个单一的实体类型叫做结构。结构类型采用关键字struct进行声明。

3.枚举类型

枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。声明枚举类型用enum开头。例如:enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};

枚举类型的元素使用的类型只能是long,int,short,byte。默认类型是int,且第一个元素的值是0,每一个连续的元素按1递增。枚举元素值可以改变。例如:enum weekday{Sunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};

引用类型

引用类型的变量不直接存储所包含的值,而是存储所要存储值的地址。C#中的引用类型包括四种:类,数组,代表和接口。

装箱和拆箱

装箱是将值类型转换为引用类型的过程。装箱某个变量,就是创建一个引用变量,使它指向堆上的新副本。

拆箱,从对象中提取值类型,即将引用类型转换为值类型。

C#程序设计基础——数据类型的更多相关文章

  1. Oracle数据库之PL/SQL程序设计基础

    PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ ...

  2. C语言程序设计基础知识点概括

    C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...

  3. 《C语言程序设计基础1》第二学期第一周学习总结

    **<C语言程序设计基础1>第二学期第一周学习总结 一. 本周学习内容总结 一维数组,了解了一维数组的定义(定义一个数组,需要明确数组变量名,数组元素的类型和数组大小,即数组中元素的数量) ...

  4. Java程序设计基础作业目录(作业笔记)

    持续更新中............. Java程序设计基础笔记 • [目录] 我的大学笔记>>> 第1章 初识Java>>> 1.1.4 学生成绩等级流程图练习 1 ...

  5. Java程序设计基础笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java程序设计基础作业目录(作业笔记) 第1章 Java程序设计基础笔记 • [第1章 初识Java] 第2章 Java程序 ...

  6. 程序设计基础·Java学习笔记·面向对象(下)

    Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...

  7. 程序设计基础·Java学习笔记·面向对象(上)

    Java程序设计基础之面向对象(上) (自适应学习进度而进行记录的笔记,希望有一些小小的用处吧(^∀^●)ノシ) (新人上路,望多指教,如有错误,望指正,万分感谢(o゚v゚)ノ) 目录 一.面向对象 ...

  8. C语言程序设计基础

    C语言程序设计基础 目录 C语言 C语言基础 C语言编程注意 C语言 C语言基础 C语言编程注意 0<9<9和0<9&&9<9是不同的 数组的声明和定义 con ...

  9. C#程序设计基础——常量

    C#程序设计基础——常量 常量是在编译时已知,并且在程序的生存期内不发生更改的不可变值.常量使用const修饰符进行声明. 常量必须在声明时初始化,且常量的类型必须为以下类型之一:sbyte/byte ...

随机推荐

  1. ECLIPSE TOMCAT CONFIG JSTL

    {LJ?Dragon}[标题]Eclipse 配置 JSTL标签库 {LJ?Dragon}[Diary]2017年,愉快的开始:当和他们离别时,感觉失去了整个世界.........   1.JSTL简 ...

  2. 详细分析 javascript 的内存分配

    JavaScript语言是一门优秀的脚本语言.其中包含脚本语言的灵活性外还拥有许多高级语言的特性.例如充许构建和实例化一个对象,垃圾回 收机制(GC:Garbage Collecation).通常我们 ...

  3. 原生 JavaScript 代码和Jquery实现对比

    下面就带大家一起看看在 IE 浏览器环境中如果使用原生 JavaScript 代码实现 jQuery 中的功能.如果你打算自己开发一个小的基础框架,可以好好参考一下这些代码的实现. 本文转载:http ...

  4. [Angular 2] Validation

    Define a filed should has validation: export class DemoFormSku { myForm: ControlGroup; sku: Abstract ...

  5. vim note(4)

    :new 文件名.词尾 新文件. :e 文件名 打开文件. :w 文件名.txt 保存文件. :wq 保存并退出. :x 辍学.假设文件更改被保存 版权声明:本文博主原创文章,博客,未经同意不得转载.

  6. 用PHP迭代器来实现一个斐波纳契数列(转)

    斐波纳契数列通常做法是用递归实现,当然还有其它的方法.这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次.注释已经写到代码中,也是相当好理解 ...

  7. mac下使用brew安装svn javahl的问题

    eclipse老提示javahl太久必须得1.8以上,以前不知道什么时候在/usr/bin装过1.7的svn. 1. 删除1.7的svn sudo rm /usr/bin/svn 2.使用brew安装 ...

  8. 第一篇:数据工程师眼中的智能电网(Smart Grid)

    前言 想必第一次接触到智能电网这个概念的人,尤其是互联网从业者,都会顾名思义的将之理解为"智能的电网". 然而智能电网中的"智能"是广义上的智能,它就是指更好的 ...

  9. codevs 1689 搭建高塔

    /*机智sort二维转一维*/ #include<iostream> #include<cstdio> #include<cstring> #include< ...

  10. ADO.NET基础

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...