类型、存储和变量

本文介绍了C#编程中的基本概念,包括类型的作用、实例化、数据成员和函数成员,以及预定义和用户定义的类型。详细阐述了栈和堆的内存管理,值类型和引用类型的区别,以及变量的声明、初始化和存储方式。同时,讨论了静态类型和动态类型(dynamic)的使用,以及可空类型的概念。
摘要由CSDN通过智能技术生成

1

c#程序是一种类型声明。

类型是一种创建数据结构的模板,描述了该模板创造对象的特征。

类型由以下元素定义:

  • 名称
  • 保存数据成员的数据结构
  • 行为及约束条件

2 实例化类型

类型模板创建的对象。

3 数据成员和函数成员

数据成员:属性

函数成员:执行代码

4 预定义类型

无需定义,c#自带的类型

5 用户定义类型

  • class
  • struct
  • array
  • enum
  • delegate
  • interface

类型通过类型声明创建,类型声明包括信息

  • 要创建的类型的种类
  • 类型的名称
  • 类型中每个成员的声明

声明了类型就可以用了

6 堆和栈

使用堆和栈这两个内存区域来存储数据

6.1栈

栈是一个内存数组,遵循后进先出的数据结构

存储在栈中的类型

  • 某些类型变量的值
  • 程序当前的执行环境
  • 传递给方法的参数

栈的几个特征

  • 数据只能从栈的顶端插入和删除
  • 把数据放到栈的顶端称为入栈 push
  • 从栈顶删除数据称作出栈 pop

6.2堆

堆是一块内存区域,在堆里可以分配内存存储类型的对象。

堆的内存可以以任意顺序存入和移除。

7 值类型和引用类型

类型被分为两种,值类型和引用类型。

两种类型的对象在内存中存储的方式不同。

当数据是该类型的成员时

  • 值类型只需要一段单独的内存,用于存储实际的数据。存放在栈中。
  • 引用类型需要两段内存。
  1. 第一段存储实际的数据,一般位于堆中。
  2. 第二段是一个引用,用于指明数据在堆中存放的位置。存放在栈中。

7.1存储引用类型对象的成员

如果数据不是该类型的成员

  • 引用类型的数据部分始终存放在堆里
  • 值类型对象和引用类型的引用部分依据情况放在堆和栈里。对象数据的部分都放在堆里。

7.2c#类型的分类

8 变量

用于存取数据。

  • 表示程序执行时存储在内存里的数据。

  • c#有四种变量

 8.1变量的声明

变量的声明定义了变量,并完成了两件事:

  • 给变量命名并为它关联一种类型
  • 让编译器为它分配一块内存

类型 名称

int var;

变量初始化语句

能把它的内存初始化为一个明确的值

int var2=17;

未赋值之前不能使用无初始化语句的变量。

自动初始化

有些类型的变量如果在声明时没有初始化语句,会被自动设为默认值。

多重变量声明

可以吧多个变量声明在一条单独的声明语句中。

  • 多重变量声明中的变量必须类型相同。
  • 变量名必须用逗号分隔,可以在变量名后包含初始化语句。

int var1=7,var4,var5=2;

使用变量的值

Console.WriteLine(“{0}”,var2);

9 静态类型和dynamic关键字

变量类型使编译器确定哪些可以存在栈上哪些可以存在堆上。

静态类型,变量的类型在编译的时候确定并且不能在运行时修改。

dynamic 动态化的静态类型

9.1可空类型

可空类型允许创建可以标记为有效或无效的值类型

创建可空类型

可空类型基于底层类型

  • 可以从任何值类型创建可空类型,包括预定义的简单类型
  • 不可以从引用类型和其他可空类型创建可空类型
  • 无需显式声明可空类型,只需声明可空类型的变量即可

在底层类型的后面加一个?就可以创建可空类型变量

int? var=22;

读取可空类型变量返回其值,但要确保变量不是null,如果读取null变量的值会产生异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值