C# —— 类型转换

ops/2024/10/17 20:18:28/

类型转换就是不同变量数据类型之间进行互相转换
隐式转换 : 默认是C#中安全的进行数据转换的方式 一般不会造成数据丢失

相同数据类型之间的隐式转换
有符号 long -> int ->short ->sbyte

long l = 1;
int i = 2;
short s = 3;
sbyte sb = 4;
// 大范围可以装小范围的
l = i;
l = s;
l = sb;
// 无法将long 类型 隐式转换为 int
// 小范围无法装大范围
// i = l;
i = s;
// l可以输出 说明隐式转换成功
Console.WriteLine(l);

无符号 ulong -> uint -> ushort -> byte

ulong ul = 1;
uint ui = 1;
ushort us = 1;
byte b = 1;

无符号的隐式转换 同有符号一样 大范围装小范围 小范围无法装大范围 

 ul = ui;

 浮点数 decimal  double -> float

float f1 = 0.2f;
double d = 0.5;
decimal d1 = 0.8m;

不同变量类型隐式转换

long l2 = 5;
int i2  = 6;
short s2 = 7;
sbyte sb2 = 8;
// 无符号的
ulong ul2 = 10;
uint ui2 = 11;
ushort us2 = 12;
byte b3 = 13;

有符号装无符号
            // 有符号可以装无符号的 但是范围一定是要涵盖的 存在隐式转换

l2 = ui2;
l2 = us2;
l2 = b3; 

无符号装有符号 
            // 无符号的变量 不能隐式转换为有符号的
            // ui2 = sb2;

            // 浮点数 和 有无符号整数之间的转换
            // double -> float -> 所有整数类型(无符号 有符号)

float f3 = 0.5f;
double d5 = 0.6;
decimal dl3 = 0.8m; 

 浮点数 是可以装载任何类型整数的

f3 = l2;
f3 = i2;
f3 = sb2;
f3 = s2;
f3 = ul2;

 特殊类型之间隐式转换

bool类型没有办法和其他类型进行隐式转换 

bool t3 = true;
char c3 = 'A';
string str2 = "sdajsan";
string str3 = "123";

 char类型 可以隐式转换为整数类型 浮点型
            对应的数字是ASCII码表 
            计算机中 数据的存储是二进制存储的 字符 中文 英文 标点符号 在计算机中就是一个二进制的数字 一个字符 对应一个数字  ASCII码就是对应关系

l2 = c3;
ul2 = c3;
Console.WriteLine(l2);
Console.WriteLine(ul2);

 总结

高精度(大范围) 可以装 低精度(小范围)
            // double -> float -> 整数(无符号 有符号) -> char
            // decimal -> 整数(无符号 有符号) -> char
            // string bool 是不参与隐式转换规则的
            // 有符号不可以隐式转换为无符号的
            // 无符号可以隐式转换为在涵盖范围内的有符号的


http://www.ppmy.cn/ops/48062.html

相关文章

如何愉快地实施数仓模型,对比下厨做饭

一般我们建设数仓,有一个链路: 比如这样的 数据从原始层到DWD、DWS层、然后ADS层。 嘿,未来的大数据专家们!当我们开始实施数据模型时,不妨参考《大数据之路》这本宝藏书。 让我们一起简化流程,注重细节…

HBuilder中能否使用机器学习

HBuilder中能否使用机器学习? HBuilder是一款由腾讯公司开发的前端开发工具,主要用于快速构建和管理HTML5应用。HBuilder本身是一个专注于Web开发的集成开发环境(IDE),它提供了代码编辑、预览、调试等功能,并且集成了Espresso等移动应用测试框架。HBuilder的核心功能是针…

算法day24

第一题 1047. 删除字符串中的所有相邻重复项 解法:利用数组来模拟一下栈 对于上述字符串转换为字符数组,通过模拟栈的操作来解决这道题,当栈为空时下一位字符直接进行入栈操作,当当前数组中要入栈的字符和栈顶的字符相同时&#x…

实验七、创建小型实验拓扑《计算机网络》

早检到底是谁发明出来的。 一、实验目的 完成本实验后,您将能够: • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中,将要求您连接网络设备并配置主机实现基本的网络…

elasticsearch安装与使用(2)-基于term匹配的简单搜索引擎搭建

把一篇pdf论文解析后,放入es数据库中,建立倒排索引表,并实现简单搜索。 1、pdf论文解析(英文) 安装pdf解析包 pip install pdfminer.sixdef extract_text_from_pdf(filename, page_numbersNone, min_line_length1):从pdf文件中提取文字:pa…

【Java刷题】二叉树

相同的树 public boolean isSameTree(TreeNode p, TreeNode q) {if(p null && q null) {return true;} else if(p ! null && q ! null) {if(p.val ! q.val) {return false;} else {return isSameTree(p.left, q.left) && isSameTree(p.right, q.rig…

设计模式-工厂方法(创建型)

创建型-工厂方法 简单工厂 将被创建的对象称为“产品”,将生产“产品”对象称为“工厂”;如果创建的产品不多,且不需要生产新的产品,那么只需要一个工厂就可以,这种模式叫做“简单工厂”,它不属于23中设计…

Java线程死锁

在Java中,线程死锁通常发生在两个或更多个线程相互等待对方释放资源的情况下。以下是一个简单的Java示例,展示了如何创建线程死锁: public class DeadlockDemo {// 定义两个资源private static Object resource1 new Object();private stat…