C#有两种类型:值类型和引用类型。值类型的变量直接包含数据,引用类型的变量则包含对变量(对象)的引用。对于引用类型,两个变量可以引用同一个对象,所以,对一个变量的操作可能会影响另一个变量引用的对象。而对于值类型,每个变量都有自己的数据副本,因此,对一个变量的操作不会影响到另一个变量(ref和out参数变量除外)。

一、值类型

  C#中值类型分为简单类型、枚举类型、结构类型和可以为null的值类型。

  1. 简单类型

    • 有符号的整形:sbyte,short,int,long.
    • 无符号的整形:byte,ushort,uint,ulong
    • Unicode字符:char,表示一个UTF-16字符
    • IEEE二进制浮点数:float,double
    • 高精度十进制浮点数:decimal
    • 布尔类型:bool,用于表示布尔值(true和false)
  2. 枚举类型
    • 格式为

      enum E {...}

      的用户定义类型

  3. 结构类型
    • 格式为

      struct S {...}

      的用户定义类型,struct类型定义了包含数据成员和函数成员的数据结构,与类类型相似,但结构类型是值类型,存储在栈上,无法被继承,并且所有结构类型均隐式继承自 object 类型

  4. 可以为null的值类型
    • 值为

      null

      的其他所有值类型的扩展

  5. 元组值类型
    • 格式为

      (T1,T2, ...)

      的用户定义类型

二、引用类型

  C#中引用类型分为类类型、接口类型、数组类型和委托类型

  1. 类类型

    • 其他所有类型的最终基类:object
    • Unicode字符串:string,表示一个UTF-16字符串
    • 格式为
      class TestClass
      {//方法、属性、字段、事件、委托//和嵌套类
      }

      的用户定义类型,class 类型定义了包含数据成员(字段)和函数成员(方法、属性等)的数据结构,一个类类型只能继承一个基类,但一个类能实现多个接口。

  2. 接口类型
    • 格式为

      interface I {...}

      的用户定义类型,定义了所有类继承接口时应遵循的语法协议。包含了属性、方法和事件的声明,这些接口成员的定义(代码实现)必须由实现接口的类或结构完成。接口可以继承自多个基接口,类和结构可以实现多个接口。

  3. 数组类型
    • 一维和多维数组,例如int[] 和 int[,]
  4. 委托类型
    • 格式为

      delegate int D(...)

      的用户定义类型,表示对具有特定参数列表和返回类型的方法的引用。

【C#学习之旅】一、数据类型相关推荐

  1. 基于 Android NDK 的学习之旅-----JNI 数据类型

    经典老套流程,学编程语言东西,先学它最基础的数据类型,JNI也是如此.JNI 定义了一系列基本数据类型和引用数据类型与java想对应. 1.基本数据类型 下面一张表是描述了 Java 基本数据类型和J ...

  2. 基于 Android NDK 的学习之旅-----数据传输二(引用数据类型)(附源码)

    基于 Android NDK 的学习之旅-----数据传输(引用数据类型) 接着上篇文章继续讲.主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输. 1.主要流程 1.  String ...

  3. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

    原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...

  4. Redis学习之旅--Redis的数据类型你都知道吗?

    Redis学习之旅--数据类型 Redis-Key String(字符串) list(列表) Set(集合) Hash(哈希) Zset(有序集合) geospatial hyperloglog bi ...

  5. 《Python零基础快乐学习之旅》学习笔记3——Python的基本数据类型

    第3章 Python的基本数据类型 1. 数值数据类型 1.1 整数与浮点数的运算 1.2 强制数据类型的转换 1.3 数值运算常用的函数 2. 布尔值数据类型 3. 字符串数据类型 3.1 字符串的 ...

  6. 基于 Android NDK 的学习之旅-----资源释放

    基于 Android NDK 的学习之旅-----资源释放 做上一个项目的时候因为与C引擎交互频繁,有时候会突然莫名其妙的的整个应用程序直接挂掉.因为我是学Java 开始的,所以对主动释放内存没多大概 ...

  7. 大数据技术 学习之旅_数据-数据科学之旅的起点

    大数据技术 学习之旅 什么是数据科学? (What is Data Science?) The interesting thing about Data Science is that it is a ...

  8. SSE指令集学习之旅(一)

    SSE指令集学习之旅(一) 文章目录 SSE指令集学习之旅(一) 1.SSE介绍 2.如何使用SSE指令 3.SSE相关数据类型 4. Intrinsic 函数的命名 5.常用的SSE指令 6.SSE ...

  9. HALCON学习之旅(五)

    HALCON学习之旅(五) 文章目录 HALCON学习之旅(五) 1.如何获取程序运行时间 2.如何将Bayer图像转换为彩色图像 3.如何将图像转化为矩阵形式 4.如何让图像自适应窗口(补充) 5. ...

  10. 单周期CPU实验之学习之旅

    初接触到CPU(处理器)的实现,有很多东西需要先学习一下,才能了解其中的原理,更好地实现它.首先,你需要深入了解MIPS指令集,理解其各个指令的执行过程:其次,你需要掌握Verilog语言的使用,理解 ...

最新文章

  1. 【秋招必备】LeetCode神器,算法刷题宝典.pdf
  2. linux编程基础_第1篇 Linux系统编程 -多线程基础
  3. Linux采用存储管理方式,19.Linux采用( A )存储管理方式。
  4. 如何让Spring MVC显示自定义的404 Not Found页面
  5. Docker上部署FTP服务器(基于stilliard/pure-ftpd)
  6. 基础知识(四)Dijkstra算法
  7. UVA 10624 Super Number
  8. 压力测试 Monkey 应用程序无响应ANR Application No Response(转)
  9. python解析json文件三种_Python解析json文件相关知识学习
  10. java获取pcm格式音频
  11. 企业网络安全最常遇到的安全问题是什么,主要面临哪些威胁?
  12. shopex PHP Notice,shopex官网用PHP为SHOPEX增加日志功能代码
  13. Android 字符串求值工具(科学计算)
  14. 二叉树基础题(六):树的子结构二叉搜索树的判断镜像二叉树
  15. 如何去高效的学习?怎样克服?
  16. 王慧文清华产品课(一)
  17. Android动画制作
  18. 天润融通亮相中国服务外包领军者年会
  19. 什么是垃圾回收机制(GC)
  20. 硬件设计:电路防护--陶瓷气体放电管(GDT)

热门文章

  1. linux 机器之间 zssh, rz, sz互相传输 ( How to install zssh in Ubuntu 13.10 (Saucy))
  2. 全面了解 Nginx 到底能做什么
  3. python将txt文件转为excel格式以及写入excel超过65536行报错问题解决方法
  4. Ethercat解析(二)之获取、编译、安装(debian7)
  5. Shell——基本运算符
  6. 【Pandas】dataframe 设置完全显示所有列
  7. HTML5中id、name、class 区别
  8. 0407 背景相关的作业
  9. 草稿 图片盒子定时器模式窗口
  10. 演练 影视演员简介 0929