关于变量的高级内容(二)

装箱、拆箱以及结构体本身的一些方法

前一章我们讲了一下值类型和引用类型这一个概念,在这里我就要为大家讲一下装箱与拆箱了。我也和大家说了,C#的原子类型实际上是Object,其他的所有东西都是由Object派生得到的。

装箱以及拆箱实际上是针对值类型和引用类型的互相转化而设计的。

装箱是指值类型转化成引用类型的过程,也就是T -> object的过程(这里的T代表所有的值类型)

而拆箱实际上就是object -> T的过程(这里的T代表所有的值类型)

装箱与拆箱的应用

装箱与拆箱在事件里面用的比较广泛,所以了解一些实质会比较方便理解这些事件。

一般而言,事件都会存在一个名叫sender的object类型的变量以及代表事件参数的EventArgs,sender是传递这个事件触发者,而EventArgs则告诉我们Sender触发了怎样的东西。

因为Sender实际上是装箱的一个类,所以我要使用的时候首先会拆箱,或者使用as关键字。之后再进行相应的处理

关于结构体的其他一些内容:

我们首先讨论一个问题:

假设我需要做一个程序,专门收集学校的教务网站,获取自己的学习成绩。在网页中,所有内容都是以文本+标记的形式存在的,如果我找到了一个表示数字的string,我想把它保存到一个int类型里面,这时候怎么办呢?

聪明的你肯定会说,我用Convert.ToInt32就好了,然而实际上很多时候不需要Convert,你用到的结构体或者类大多都会提供一些方法让你尝试转换。

就比如说int.Parse(),它提供一个方法让你能够将字符串里面的数字转化为等效的整数形式,这比直接使用Convert更加方便一些。

时间: 2024-10-29 19:11:25

关于变量的高级内容(二)的相关文章

关于变量的高级内容(一)

值类型与引用类型 在C#里面只存在两种变量类型,一种是值类型另一种是引用类型. C#的值类型包括了结构体和枚举,而引用类型则是指类. 也就是说除了object.类.枚举.结构体之外C#没有其他的数据类型了. 至于值类型与引用类型的区别,我要好好说明一下,两个值类型在进行赋值操作的时候,系统将会将他们的值赋值: 也就是说 //在下面的操作当中,i的值将会完整的复制到b中int i=10; int b=i; 而引用类型,只能进行引用 //假设我定义了一个类cls //下面进行类初始化 cls A =

MySQL数据库高级(二)——自定义函数

MySQL数据库高级(二)--自定义函数 一.自定义函数简介 自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同.自定义函数的两个必要条件:A.参数B.返回值(必须有).函数可以返回任意类型的值. 二.自定义函数的使用 1.自定义函数语法 CREATE?FUNCTION?function_name(parameter_nametype,[parameter_name type,...]) RETURNS?{STRING|INTEG

C#入门经典札记_Ch05变量的更多内容

Chapter 05 变量的更多内容 5.1类型转换 1.无论什么类型,所有的数据都是一系列的位,即一组0和1.变量的含义是通过解释这些数据的方式来传达的.最简单的示例是char类型,这种类型用一个数字表示Unicode字符集中的一个字符.实际上,这个数字与ushort的存储方式相同----他们都是存储0~65535之间的数字. 2.一般情况下,不同类型的变量使用不同的模式来表达数据.这意味着,即使可以把一系列的位从一种类型的变量移动到另一种类型的变量中(也许他们占用的存储空间相同,也许目标类型

第7课 - 变量的高级主题(下)

第7课 - 变量的高级主题(下) 1. makefile中的环境变量(全局变量) (1)makefile中使用系统环境变量 makefile中可以直接使用系统中的环境变量(系统环境变量的本质就是全局的键值对) 如果 makefile 中定义了同名变量,那么环境变量将会被覆盖 运行 make 时指定 "-e" 选项,优先使用环境变量 1 # 测试makefile中环境变量的使用 2 3 # 例1 4 PATH := my path 5 6 test : 7 @echo "PAT

第九章 变量的高级用法

内部变量 1.BASH 记录了bash Shell的路径(通常为/bin/bash) [[email protected] tmp]# echo "$BASH" /bin/bash 2.BASH_VERSINFO 为一个数组,分别存储bash shell的主版本号,此版本号,补丁级别,编译版本,发行状态,硬件架构 [[email protected] tmp]# cat c.sh #! /bin/bash for n in 0 1 2 3 4 5 do echo "BASH_

MySQL数据库 高级查询(二)

高级查询(二)  EXISTS 子查询 语法: SELECT ..... FROM  表名 WHERE EXISTS (子查询); EXISTS 关键字后面的参数是一个任意的子查询,如果该子查询有返回值,则EXISTS 子查询的结果为true,此时再执行外层查询语句.如果没有返回行,则EXISTS 子查询 的结果为false,此时外层语句不再执行查询.  NOT EXISTS 子查询 EXISTS 子查询和NOT EXISTS 子查询的结果只取决于是否有返回记录,不取决于这些记录的内容,所以EX

Solidity高级理论(二):Gas

solidity高级理论(二):Gas 关键字:Gas.结构体.节省小技巧 Gas是什么 在Solidity中,用户想要执行DApp都需要支付一定量的Gas,Gas可以用以太币购买,所以,用户每次使用DApp都会发费以太币. 一个 DApp 收取多少 gas 取决于功能逻辑的复杂程度.每个操作背后,都在计算完成这个操作所需要的计算资源,(比如,存储数据就比做个加法运算贵得多), 一次操作所需要花费的 gas 等于这个操作背后的所有运算花销的总和. 由于运行你的程序需要花费用户的真金白银,在以太坊

Stm32高级定时器(二)

Stm32高级定时器(二) 1 主从模式:主?从? 谈论主从,可知至少有两个以上的触发或者驱动信号,stm32内部有多个定时器,可以相互之间驱动或者控制. 主模式:定时器使能只受驱动时钟控制或者输出控制信号(TRGO). 从模式:复位模式, 在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化:同时,如果IMx_CR1寄存器的URS 位为低,还产生一个更新事件UEV :然后所有的预装载寄存器(TIMx_ARR ,TIMx_CCRx)都被更新了. 从模式:门控模式, 计数器的使能依赖于选

OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)

OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,uniform,纹理查找,等等),是不是顶点或者片元着色器,还有其他一些底层实现的细节.最低存储需要通过精度修饰符来声明.典型地,精度操作必须要保留变量包含的精度存储.仅有的例外是需要大量复杂计算的内建函数,如atan(),返回值的精度低于声明的精度. 强烈建议顶点语言提供一种匹配IEEE单精度浮点数或更高精