C# 图解教程 第三章 类型、存储和变量

类型、存储和变量

C#程序是一组类型声明



C程序是一组函数和数据类型 
C++程序是一组函数和类 
C#程序是一组类型声明

  • C#程序或DLL源码是一组一种或多种类型声明
  • 对于可执行程序,类型声明中必须有一个包含Main方法的类
  • 命名空间是一种把相关类型声明分组并命名的方法

类型是一种模板



可以把类型想象成一个用来创建数据结构的模板。模板本身不是数据结构,但它说明了由该模板构造的对象的特征。

类型由下面的元素定义:

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

例:short类型和int类型


实例化类型



从类型模板创建实际对象,称为实例化类型

  • 实例化类型创建的对象称为类型的实例(对象)
  • C#程序中,每个数据项都是某类型的实例。类型可以是语言自带的、BCL或其它库提供的,或是程序员定义的

数据成员和函数成员


  • 数据成员:保存了与这个类的对象或作为一个整体的类相关的数据
  • 函数成员:执行代码。函数成员定义类型的行为

预定义类类型



C#提供16种预定义类型,包括13种简单类型和3种非简单类型

  • 简单类型

    • 11种数值类型

      • 不同长度的有符号和无符号整数类型
      • 浮点数的float和double
      • 高精度小数类型decimal(常用于货币计算)
    • 一种Unicode字符类型 char
    • 一种bool类型,布尔值只能为true或false
  • 非简单类型
    • string Unicode字符数组
    • object 所有其他类型的基类
    • dynamic 使用动态语言编写程序集时使用

所有的预定义类型都直接映射到底层的.NET类型。C#类型名称就是.NET类型的别名, 
所以可以使用.NET类型名称替代C#类型名,但不鼓励这样做。


用户定义类型



用户可以自定义6种类型

  • class 类类型
  • struct 结构类型
  • array 数组类型
  • enum 枚举类型
  • delegate 委托类型
  • interface 接口类型

类型通过类型声明创建,类型声明包含以下信息

  • 要创建类型的种类
  • 新类型名称
  • 类型中每个成员的声明(array和delegate除外,它们不含命名成员)

栈和堆



程序运行时,他的数据必须存储在内存中。一个数据需要多大内存,存储在什么地方,以及如何存储都依赖于该数据项的类型。 
运行中程序使用两个内存区域来存储数据:栈和堆

栈是一个LIFO(Last-In First-Out,后进先出)的内存数组。 
栈存储以下几种类型数据

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

栈的特征

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

在堆里可以分配大块内存来存储某类型的数据对象。 
与栈不同,堆里的内存能以任意顺序存入或移除。 

CLR的GC(Garbage Collector,垃圾收集器)自动删除堆上不再访问的数据。


值类型和引用类型


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

存储引用类型对象的成员

如果数据是另一个对象的成员,那么它的存储会有些不同

  • 引用类型对象的数据部分始终存放在堆里
  • 值类型对象,或引用类型数据的引用部分可以存在堆里,也可以存在栈里,这取决于实际情况

对于一个引用类型,其实例的数据部分始终存放在堆里


C#类型的分类

变量



变量允许程序存取数据

  • 变量是一个名称,表示程序执行时存储在内存中的数据
  • C#提供4种变量

静态类型和dynamic关键字



每个变量都有变量类型,这样编译器就可以确定运行时需要的内存总量以及哪些部分应该存在栈上,哪些存在堆上。 
变量类型在编译时就确定且不能在运行时修改,这叫静态类型。 
dynamic代表一个特定的、实际的C#类型,它知道如何在运行时解析自身。

可空类型



某些情况下,特别是使用数据库时,你希望表示变量目前未保存有效的值(数据库中的null)。 
对于引用类型,你可以直接把变量设置为null,但值类型不行。 
可空类型允许创建可以标记为有效或无效的值类型

int? i =10;
double? d1 =3.14;
bool? flag =null;
char? letter =‘a‘;
int?[] arr =newint?[10];

原文地址:https://www.cnblogs.com/GarfieldEr007/p/10126545.html

时间: 2024-10-09 23:29:09

C# 图解教程 第三章 类型、存储和变量的相关文章

HttpClient4.3教程 第三章 Http状态管理

HttpClient4.3教程 第三章 Http状态管理 Posted on 2013 年 10 月 13 日 最初,Http被设计成一个无状态的,面向请求/响应的协议,所以它不能在逻辑相关的http请求/响应中保持状态会话.由于越来越多的系统使用http协议,其中包括http从来没有想支持的系统,比如电子商务系统.因此,http支持状态管理就很必要了. 当时的web客户端和服务器软件领先者,网景(netscape)公司,最先在他们的产品中支持http状态管理,并且制定了一些专有规范.后来,网景

爬虫学习之第三章数据存储

第三章 数据存储 第一节 json文件处理: 什么是json: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率.更多解释请见:https://baike.baidu.com/item/JS

Blend4精选案例图解教程(三):一键拖拽

原文:Blend4精选案例图解教程(三):一键拖拽 拖拽效果,常规实现方法是定义MoveLeftDwon.MoveLeftUp.MouseMove事件,在Blend的世界里,实现对象的拖拽,可以不写一行代码,而且非常简单,本次教程跟大家分享这个技巧. 1.新建项目,在默认设计视图添加一个元素,这里添加一个图片 视图树 设计视图 2.在资源面板(Asset)中,找到Behavior分类,选择MouseDragElementBehavior,从名字上我们就应该能理解这个行为实现的功能 3.把选中的行

《JS权威指南学习总结--第三章类型、值和变量》

第三章 类型.值和变量 内容要点 一.数据类型 1.在编程语言中,能够表示并操作的值的类型称做数据类型 2.JS的数据类型分为两类: 原始类型:数字.字符串和布尔值 对象类型 3.JS中有两个特殊的原始值:null(空)和undefined(未定义) 4.对象(object):是属性(property)的集合,每个属性都由"名/值对"构成. 5.函数:JS中定义的另一种特殊对象.函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行的代码,并返回运算结果. 6.构造函数: 如

(转)JAVA AJAX教程第三章—AJAX详细讲解

现在开始深入AJAX,这里还是按老思路,理论和实践相结合.这章的内容主要是讲解AJAX步骤详解,下一张将会用一个AJAX技术实现页面提示效果的实例来说明AJAX的实现. 一.AJAX步骤详解 AJAX实质上是遵循Request/Server模式来进行工作的,这个框架基本的流程包括下面几个具体的步骤: (1)       XMLHttpRequest对象初始化 (2)       发送请求 (3)       服务器接收请求并进行处理 (4)       服务器返回响应数据 (5)       客

C#图解教程 第七章 类和继承

类和继承 类继承 通过继承我们可以定义一个新类,新类纳入一个已经声明的类并进行扩展. 可以使用已存在的类作为新类的基础.已存在类称为基类(base class),新类称为派生类(derived class).派生类组成如下: 本身声明中的成员 基类的成员 声明派生类,需要在类名后加入基类规格说明 派生类扩展它的基类,因为它包含了基类的成员,加上它本身声明中的新增功能 派生类不能删除它所继承的任何成员 例:OtherClass类,继承自SomeClass class OtherClass:Some

3 类型,存储和变量1

c#程序是一组类型声明 类型是一种模板 实例化类型 数据成员和函数成员 预定义类型 用户定义类型 栈和堆 值类型和引用类型 存储引用类型对象的成员 c#类型的分类 变量 变量声明 变量初始化 自动初始化

第三章:数据类型和变量

1.  变量的名命名规范: a.  只能由 字母 数字 及 _ 组成 . b.  不能以数字开头. c.  避免与系统关键字重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样来做) 注:以下关键字变为变量名直接会出现错误['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for','from', 'g

Swift学习笔记 - 教程学习三 集合类型 (Collection Types)

集合类型 (Collection Types) 本节及前面用到的for…in句型在后面的循环控制部分,if let 见基础篇.如果某些字符看不到,请到博客园来看原文.——新波 Swift提供了三种基本集合类型,数组(array).集合(set)和字典(dictionary).数组是一组按序排列的数据,集合是一组各不相同的无序数据,字典是一组与关键值相关联的无序数据.参见下图. 3.1 集合的可变性Mutability of Collections 与前面的字符串一样,赋值给变量的集合是可变的,赋