第五章 变量的更多内容

  本章内容:

  ●  如何在类型之间进行隐式和显式转换
  ●  如何创建和使用枚举类型
  ●  如何创建和使用结构类型
  ●  如何创建和使用数组
  ●  如何处理字符串值

  首先要讨论的主题是类型转换,即把值从一种类型转换为另一种类型。

  接着阐述另外一些类型的变量:

    枚举——变量类型,用户定义了一组可能的离散值,这些值可以用人们能理解的方式使用。

    结构——合成的变量类型,由用户定义的一组其他变量类型组成。

    数组——包含一种类型的多个变量,可以以索引方式访问各个数值。

  这些类型比前面使用的简单类型复杂一些,但可以使工作更容易完成。最后,学习另一个与字符串相关的主题——基本字符串处理。

5.1  类型转换

  类型转换采用以下两种形式:

    隐式转换:从类型A到类型B的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。

    显式转换:从类型A到类型B的转换只能在某些情况下进行,转换的规则比较复杂,应进行某种类型的处理。

5.1.1  隐式转换

  隐式转换不需要做任何工作,也不需要另外编写代码。考虑下面的代码:

var1 = var2; 

  如果var2的类型可以隐式地转换为var1类型,这个赋值语句就涉及到一个隐式转换。它也可能只处理相同类型的两个变量,不需要隐式转换。例如,ushort和char的值是可以互换的,因为它们都可以存储0~65535之间的数字,在这两个类型之间可以进行隐式转换,如下面的代码所示:

ushort destinationVar;
char sourceVar = 'a';
destinationVar = sourceVar;
Console.WriteLine("sourceVar val: {0}", sourceVar);
Console.WriteLine("destinationVar val: {0}", destinationVar); 

  这里存储在sourceVar中的值放在destinationVar中。在用两个Console.WriteLine()命令输出变量时,得到如下结果:

sourceVar val: a
destinationVar val: 97 

  即使两个变量存储的是相同的信息,使用不同的类型解释它们时,方式也是不同的。

  简单类型有许多隐式转换;bool和string没有隐式转换,但数值类型有一些隐式转换。表5-1列出了编译器可以隐式执行的数值转换(记住,char存储的是数值,所以char被当作一个数值类型)。

  这些类型的隐式转换规则是:任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以隐式转换为类型B。

  其原因是很简单的。如果要把一个值放在变量中,而该值超出了变量的取值范围,就会出问题。例如,short类型的变量可以存储0~32767的数字,而byte可以存储的最大值是255,所以如果要把一个short值转换为byte值,就会出问题。如果short包含的值在256~32767之间,相应数值就不能放在byte中。

  但是,如果short类型变量中的值小于255,就应能转换这个值,对吗?答案是可以。具体地说是可以,但必须使用显式转换。执行显式转换有点类似于“我已经知道你对在这么做提出了警告,但我将对其后果负责”。

转载于:https://www.cnblogs.com/wodehao0808/p/4908553.html

(原创)c#学习笔记05--变量的更多内容01--类型转换01--隐式转换相关推荐

  1. opencv学习笔记05

    原创:opencv学习笔记05 OpenCV-Python教程:40.ORB https://www.jianshu.com/p/49a84ddef11d ORB最重要的事情是它是OpenCV实验室出 ...

  2. 【计算机网络学习笔记05】典型企业网络架构、传输介质

    [计算机网络学习笔记05]典型企业网络架构.传输介质 企业网络是 Internet 的重要组成部分,随着企业业务需求而不断地变化.为了了解企业网络如何满足企业业务需求,必须了解典型的企业网络架构以及网 ...

  3. 【PIE-Engine Studio学习笔记05】图像分类——非监督分类

    [PIE-Engine Studio学习笔记05]图像分类--非监督分类 一.图像分类含义 图像分类是将图像中每个像元根据其在不同波段的光谱亮度.空间结构特征或者其他信息,按照某种规则或算法划分为不同 ...

  4. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

  5. ESP32 单片机学习笔记 - 05 - AP/Smart Config

    ESP32 单片机学习笔记 - 05 - AP/Smart Config 终于把感觉必要的基础外设学完了,开始学esp32的主要特色功能--物联网~~?(大概) 一.WIFI热点 AP模式 编程指南: ...

  6. JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  7. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

  8. JavaScript学习笔记05【高级——DOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  9. MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

最新文章

  1. OpenCV和Python动手操作计算机视觉学习教程
  2. 大佬教你Android如何实现时间线效果
  3. 阿里云西安ACE同城会 | 钉钉生态应用促进企业信息化实战沙龙
  4. 团队博客作业-团队个人贡献分分配规则
  5. 分布式与人工智能课程(part16)--深度学习
  6. Java线程机制学习
  7. spring 查找实现类_69道Spring面试题和答案
  8. Apache Storm源码阅读笔记
  9. 从感知机到支持向量机—学习笔记
  10. 月均数据_药品销售数据分析案例
  11. 为什么当前互联网+法律发展艰难?
  12. android jni bitmap,android – 如何使用JNI位图操作来帮助避免...
  13. 62. Event shiftKey 事件属性
  14. uploadify php使用,如何在ThinkPHP中使用Uploadify对图片进行上传
  15. 金蝶生成凭证模板_软件-金蝶外购入库凭证模版
  16. A STRIP OF LAND POJ - 1156 (单调队列)
  17. 低价主机,怎么找性价比虚拟主机香港空间
  18. 达梦数据库基础篇--数据库管理工具
  19. 饿了么交易系统设计思路
  20. C++知三角形三边求面积

热门文章

  1. 树莓派Raspberry命令行配置无线网络连接
  2. mysql之存储引擎和文件配置
  3. JDBC(11)—数据库连接池
  4. 把linux插足到域
  5. 深入理解js系列一作用域是什么
  6. CentOS SSH企业应用快速配置
  7. 2016四季度 服务器收入和出货量双下滑
  8. 戴尔发布面向制造、生命科学和研究的高性能计算系统
  9. Center os vi
  10. Linux中sort、uniq、cut、wc命令详解