一、C#数据类型:

A:值类型

值类型变量可以直接分配一个值,它是从System.ValueType派生而来,值类型直接包含数据,比如int,char,float,他们分别存储整型数据,字符,浮点数,当你申明一个值类型时,系统分别空间来存储值类型的数据,值类型包含以下类别:

此外,结构体,及枚举类型也都属于值类型。

B:引用类型

引用类型不包含存储在变量中的实际数据,但是它们包含对数据的引用,换句话说,它指向内存中的位置,如果内存中的数据是由一个变量改变的,其它变量也会自动反映这种变化,内置的引用类型有object,dynamic,String

1.object类型

object类型是C#通用类型系统所有数据类型的终极基类,Object是System.Object类的别名,所以Object类型可以被分配成任何其它类型(值类型、引用类型、预定义类型或用户自定义类型)的值,但是在分配之前需要进行类型转换。当一个值类型转换为引用类型时称为装箱,当一个值类型转换为Object时称为拆箱,拆装箱是非常损耗内存的,会影响程序的执行效率,所以要尽量避免执行拆装箱操作。

  int ii=;
object o = ii;

装箱操作

object o = ;
int ii = (int)o;

拆箱操作

2.dynamic类型

您可以存储任何类型的数据在动态类型中,这些变量类型检查是在程序运行时发生的。动态类型和对象类型相似,但是对象类型的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

 dynamic type;
type = "";

dynamic

3.string类型

允许您给变量分配任何字符串值,字符串的赋值比较特别,字符串是"不可变的",对字符串的操作实质是返回新的字符串操作,

string str1 = "A";
string str2 = "B";
str1 += str2;

String

执行完代码后 str1 = "AB",str1指向了新的内存空间,但是之前的A并没有消失,还占据着内存等着GC对其进行回收。

假如大量操作字符串会令程序性能下降,所以产生了StringBuider

StringBuilder sb = new StringBuilder("Hello");
sb.Append("Word");
sb.Append("!");

StringBuilder

只有在大量进行字符串操作时才能体现出StringBuilder的优势

用户自定义类型包括 Class,delegate,interface

C:指针类型

C#中的指针类型和C,C++中的一样,都是指向一片内存地址,但是在C#中尽量少用指针类型。

二、C#中数据类型转换

数据类型的转换包括显示类型转换和隐式类型转换

1.隐式类型转换

隐式类型转换主要发生在C#默认数据转换是安全的情况下,比如int型赋值给double型:

int i = ;
double d = i;

一般情况下小转大不会发生数据的丢失,所以可以用隐式类型转换.

2.显示类型转换

显示类型转换包含两种:

一种是将字符串转换为想要的数据类型,Parse

string str = "";
i = int.Parse(str);

这种转换方式有一个弊端,那就是待转换的字符串确实可以转换为int,一旦待转换的字符串不可以转换成为对应的类型,就会报错。为了克服这个弊端,可以用TryParse

另一种就是万能转换Convert.To

string str = "";
double s = Convert.ToDouble(str);

Convert.To

C#中的变量祥解的更多相关文章

  1. ES6中的变量的解构赋值, 解放我们的双手,实现变量的批量赋值

    ES6--变量的解构赋值 引言 正文 一.数组的解构赋值 解构失败 不完全解构 默认值 二.对象的解构赋值 三.字符串的解构赋值 结束语 引言 变量的解构赋值, 听起来很复杂, 简单点说可以理解成批量 ...

  2. java学习(二)多态中成员变量详解

    今天我总结了一下java多态中成员变量的赋值与调用 举一个我当初做过的小案例: class Fu{ int num; void show(){} } class Zi extends Fu{ //in ...

  3. PHP中的变量详解

    php变量通过名只能我们就知道首先变量,是在程序执行期间,可以变化的量. 1.那变量是干嘛的呢,用变量就可以来保存我们值,这就是变量,那么我们接着来看,知道了变量是什么,以及它能干什么,我们再来看一下 ...

  4. 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解

    Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解   多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...

  5. Node.js中环境变量process.env详解

    Node.js中环境变量process.env详解process | Node.js API 文档http://nodejs.cn/api/process.html官方解释:process 对象是一个 ...

  6. [转帖]【Oracle】详解Oracle中NLS_LANG变量的使用

    [Oracle]详解Oracle中NLS_LANG变量的使用 https://www.cnblogs.com/HDK2016/p/6880560.html NLS_LANG=LANGUAGE_TERR ...

  7. Python中的变量和作用域详解

    Python中的变量和作用域详解 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部 ...

  8. ES6中变量的解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 输出: 上面代码表示,可以从数组中提取值,按照对应位置,对变 ...

  9. ES6 中变量的解构赋值

    1. 数组的解构赋值 解构: ES6 中允许按照一定的模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构(Destructuring). 1. 基本用法 本质上,这种写法属于"模式匹 ...

随机推荐

  1. css关于flex布局下不能实现text-overflow: ellipsis的解决办法

    摘录自 https://segmentfault.com/q/1010000011115918

  2. TCP三次握手抓包理解

    TCP建立连接需要三次握手,分手需要四次握手,平时在网上看到很多次,但是还没有很理解.为什么分手要多一次?可能是刚开始追求女生的时候比较容易,到分手的时候就比较麻烦了吧... 了解某个东西要从它的基础 ...

  3. jQuery入门一(jQuery下载以及基本语法)

    1. jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是 ...

  4. Office2010安装问题锦集

    问题一,每次打开office 2010,都会出现重新配置的对话框. 解决姿势: 大部分搜索到的解决方法大概有2种, 一个是修改注册表,在注册表中这个这个位置增加一个名为NoRereg的32位World ...

  5. 高级查询语句____ Mysql

    MySQL高级查询 高级查询 关键字书写顺序  关键字执行顺序select:投影结果       1    5 from:定位到表             2    1 where:分组前第一道过滤  ...

  6. 用ECharts绘制Prometheus图表,实现类似Grafana的自定义Dashboard

      大家一般都是用Grafana自定义Dashboard来监控Prometheus数据的,作者这次尝试用ECharts来绘制Prometheus数据图表,一方面可以减少依赖,另一方面可以将监控界面灵活 ...

  7. 通过ping命令了解三层转发流程

    ping命令:因特网包探索器.本文主要通过路由器两端不同网段PC互ping来讲解三层转发流程. 例子:PC-A是如何 ping 通 PC-C 的,有几种情况? 说明:1.在条件1阶段PC-C不会刷新a ...

  8. Linux系统下增加LV(逻辑卷)容量 、Linux系统下减少LV(逻辑卷)容量

    查看文件系统现有lv_test容量,总计4.9G,已使用3% 命令 df -h   查看现有磁盘情况,我们发现磁盘sdb共有1305个柱面,每个柱面大小是8225280 bytes (大约8M).有一 ...

  9. 激活函数、正向传播、反向传播及softmax分类器,一篇就够了!

    1. 深度学习有哪些应用 图像:图像识别.物体识别.图片美化.图片修复.目标检测. 自然语言处理:机器创作.个性化推荐.文本分类.翻译.自动纠错.情感分析. 数值预测.量化交易 2. 什么是神经网络 ...

  10. 异步编程CompletableFuture实现高并发系统优化之请求合并

    先说场景: 根据Redis官网介绍,单机版Redis的读写性能是12万/秒,批量处理可以达到70万/秒.不管是缓存或者是数据库,都有批量处理的功能.当我们的系统达到瓶颈的时候,我们考虑充分的压榨缓存和 ...