C#_02.12_基础二_.NET类型存储和变量
C#_02.12_基础二_.NET类型存储和变量
一、核心一句:C#程序是一组类型声明(留待后面慢慢体会,现在不是很理解,不强说了)
二、数据类型:
1、预定义了16种数据类型:
其中13种简单数据类型,包括11种数值类型和2种非数值类型:
数值类型:
|
数据类型 |
字节 |
有无符号 |
后缀 |
默认值 |
精确位数 |
|
Sbyte: |
1 |
无 |
= |
0 |
0 |
|
Byte: |
1 |
有 |
= |
0 |
0 |
|
Short: |
2 |
无 |
= |
0 |
0 |
|
Ushort: |
2 |
有 |
= |
0 |
0 |
|
Int: |
4 |
无 |
= |
0 |
0 |
|
Uint: |
4 |
有 |
U |
0 |
0 |
|
Long: |
8 |
无 |
L |
0 |
0 |
|
Ulong: |
8 |
有 |
UL |
0 |
0 |
|
Float: |
4 |
无 |
F |
0.0F |
7 |
|
Double: |
8 |
有 |
D |
0.0D |
15 |
|
Decimal: |
16 |
有 |
M |
0.0M |
28 |
非数值类型:
Bool:占一个字节,默认值是FALSE
Char:占一个字节,默认值是\x000
3种非简单数据类型:
String:相当于char型的数组:
Object:是C#所有对象的基类;
Dynamic:江湖传言这一种数据类型在IL里面object类型。经验证确实是object类型。与var的区别是:
1、var能够使用智能感知,dynamic不行,写的时候使用var声明的变量可以使用” . ”来方便书写,而是用dynamic声明的变量因为无法智能感知,所以不行。
2、在编译的时候,var声明的变量是有进行类型检查的,而使用dynamic是没有的,一直到运行的时候才进行类型检查。
个人对于dynamic的初步感觉:平常情况下不好用,因为是不能够智能感知的,因此在编写的时候可能出现所调用的方法不对之类的情况,又需要等到代码运行才能够检查出来。

2、用户自定义类型(6种):
类类型(class):
结构类型(struct):
数组类型(array):
枚举类型(enum):
委托类型(delegate):
接口类型(interface):
三、值类型与引用类型:
值类型是存储在栈内存当中的,而引用类型是存储在堆内存当中的。一个引用类型不管是否包含值类型,都是存储在堆当中的。值类型和引用类型之间的存储的区别是:
值类型是存储在栈当中的,只需要一段内存存储实际的数据;
引用类型需要两端内存:一是堆当中的,是引用类型的实际数据,一段是在栈当中的,是存储指向引用类型实际数据的引用。
|
# |
值类型 |
引用类型 |
|
预定义类型 |
sbyte、 byte、 short、ushort、 int、 uint、 |
string |
|
自定义类型 |
struct enum |
class |
四、变量
变量分为四种类型:
|
变量类型 |
描述 |
是否自动赋值 |
|
本地变量 |
函数当中定义的变量,局部变量,不是类的成员 |
否 |
|
参数 |
作为方法间传递的变量,不是类的成员 |
否 |
|
字段 |
是类的成员 |
是 |
|
数组 |
可是可不是类的成员,一般由同类型的变量组成 |
是 |
注:数组和字段(属性)才可以对未赋值的变量进行自动赋值
C#_02.12_基础二_.NET类型存储和变量的更多相关文章
- C#_02.16_基础七_.NET表达式&运算符
C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...
- C#_02.15_基础六_.NET类
C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...
- C#_02.14_基础五_.NET类
C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...
- C#_02.13_基础四_.NET方法
C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头 AND 方法 ...
- C#_02.10_基础一_.NET框架
C#_02.10_基础一_.NET框架 一.概念: .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境. 解读: 1..net框架是一个编程环境, 2.可以进行多语言的开发和 ...
- C#_02.13_基础三_.NET类基础
C#_02.13_基础三_.NET类基础 一.类概述: 类是一个能存储数据和功能并执行代码的数据结构,包含数据成员和函数成员.(有什么和能够干什么) 运行中的程序是一组相互作用的对象的集合. 二.为类 ...
- SpringMVC基础(二)_文件上传、异常处理、拦截器
实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:mu ...
- Spring基础(二)_面向切面(AOP)
面向切面编程 面向切面编程[AOP,Aspect Oriented Programming]:通过预编译方式和运行期间动态代理实现程序功能的统一维护的技术.AOP 是 Spring 框架中的一个重要内 ...
- vue(基础二)_组件,过滤器,具名插槽
一.前言 主要包括: 1.组件(全局组件和局部组件) 2.父组件和子组件之间的通信(单层) 3.插槽和具名插槽 ...
随机推荐
- [转] whistle--全新的跨平台web调试工具
whistle是基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler+Willow,基于Java实现的Charles,及公司同事基于Node实现的Livepoo ...
- Angularjs 学习笔记-2017-02-05-初识Angular及app、model、controller、repeat指令和fileter、orderBy
ng-app 定义作用域,从作用域处开始执行ng命令指令 ng-model 数据绑定字符,用于双向数据绑定 ng-controller ng控制台,定义function name($scope)来 ...
- Docker Client (another java docker client api)
前一篇提到了docker-java,这里介绍另一个docker client 库,Docker Client 版本兼容 兼容17.03.1~ce - 17.12.1~ce (点 [here][1]查看 ...
- 如何确定系统上的CPU插槽数量
环境 Red Hat Enterprise Linux 7 Red Hat Enterprise Linux 6 Red Hat Enterprise Linux 5 Red Hat Enterpri ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-6项目缓冲方案
Asp.Net Core2.0下使用memcached缓存. Memcached目前微软暂未支持,暂只支持Redis,由于项目历史原因,先用博客园开源项目EnyimMemcachedCore,后续用到 ...
- BZOJ1503 [NOI2004]郁闷的出纳员 splay
原文链接http://www.cnblogs.com/zhouzhendong/p/8086240.html 题目传送门 - BZOJ1503 题意概括 如果某一个员工的工资低于了min,那么,他会立 ...
- BZOJ1799 self 同类分布 数位dp
BZOJ1799self 同类分布 去博客园看该题解 题意 给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数. [约束条件]1 ≤ a ≤ b ≤ 10^18 题解 1.所有的位数之和&l ...
- Hdu-2016解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2016 题目解析:输入n个数据,找出n个数据中最小的数据,将它与第一个数据进行交换.(这里可得看清题意, ...
- Codeforces 948D Perfect Security 【01字典树】
<题目链接> 题目大意: 给定两个长度为n的序列,可以改变第二个序列中数的顺序,使得两个序列相同位置的数异或之后得到的新序列的字典序最小. 解题分析: 用01字典树来解决异或最值问题.因为 ...
- POJ 2594 Treasure Exploration (Floyd+最小路径覆盖)
<题目链接> 题目大意: 机器人探索宝藏,有N个点,M条边.问你要几个机器人才能遍历所有的点. 解题分析: 刚开始还以为是最小路径覆盖的模板题,但是后面才知道,本题允许一个点经过多次,这与 ...