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、
long、    ulong、    float、double、  decimal、  bool、
          char

string
object
dynamic

自定义类型

struct      enum

class
interface
delegate
array

四、变量

变量分为四种类型:

变量类型

描述

是否自动赋值

本地变量

函数当中定义的变量,局部变量,不是类的成员

参数

作为方法间传递的变量,不是类的成员

字段

是类的成员

数组

可是可不是类的成员,一般由同类型的变量组成

注:数组和字段(属性)才可以对未赋值的变量进行自动赋值

C#_02.12_基础二_.NET类型存储和变量的更多相关文章

  1. C#_02.16_基础七_.NET表达式&运算符

    C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...

  2. C#_02.15_基础六_.NET类

    C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...

  3. C#_02.14_基础五_.NET类

    C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...

  4. C#_02.13_基础四_.NET方法

    C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头  AND  方法 ...

  5. C#_02.10_基础一_.NET框架

    C#_02.10_基础一_.NET框架 一.概念: .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境. 解读: 1..net框架是一个编程环境, 2.可以进行多语言的开发和 ...

  6. C#_02.13_基础三_.NET类基础

    C#_02.13_基础三_.NET类基础 一.类概述: 类是一个能存储数据和功能并执行代码的数据结构,包含数据成员和函数成员.(有什么和能够干什么) 运行中的程序是一组相互作用的对象的集合. 二.为类 ...

  7. SpringMVC基础(二)_文件上传、异常处理、拦截器

    实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:mu ...

  8. Spring基础(二)_面向切面(AOP)

    面向切面编程 面向切面编程[AOP,Aspect Oriented Programming]:通过预编译方式和运行期间动态代理实现程序功能的统一维护的技术.AOP 是 Spring 框架中的一个重要内 ...

  9. vue(基础二)_组件,过滤器,具名插槽

    一.前言 主要包括:  1.组件(全局组件和局部组件)                     2.父组件和子组件之间的通信(单层)                     3.插槽和具名插槽     ...

随机推荐

  1. JS如何监听动画结束

    场景描述 在使用JS控制动画时一般需要在动画结束后执行回调去进行DOM的相关操作,所以需要监听动画结束进行回调.JS提供了以下事件用于监听动画的结束,简单总结学习下. CSS3动画监听事件 trans ...

  2. sqlserver中的数据转换与子查询

    数据类型转换 --cast转换 select CAST(1.23 as int) select CAST(1.2345 as decimal(18,2)) select CAST(123 as var ...

  3. python全栈开发day74-普通验证码和滑块验证码

    一.昨日内容回顾 django认证系统 1. 默认auth_user ``` # 创建用户 from django.contrib.auth.models import User User.objec ...

  4. 修改tomcat的默认访问日志信息

    修改前:

  5. vsftp虚拟主机实战

    文件传输协议,基于该协议FTP客户端与服务端可以实现共享文件,上传文件,下载文件.FTP基于TVP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输, ...

  6. 2501 矩阵距离 (bfs)

    描述 给定一个N行M列的01矩阵 A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: dist(A[i][j],A[k][l])=|i-k|+|j-l| 输出一个N行M列的整数矩阵B,其 ...

  7. Java 并发工具包 | J.U.C

    不知道大家还有没有印象,上次我们已经说过了,我们为了实现集合相关类的线程安全,JDK 提供了一套同步容器,也就是 Vector,Hashtable,还有一个 Collections 工具类中的几个方法 ...

  8. PAT (Advanced Level) Practise 1002 解题报告

    GitHub markdownPDF 问题描述 解题思路 代码 提交记录 问题描述 A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 ...

  9. MySQL安装目录修改

  10. C# 正规则表达式

    获取括号里的内容 public string GetRegexStr(string Str, string Symbol1, string Symbol2, bool needSymbol) { ]; ...