四、C#类型转换

在C#中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。

C#中的类型转换可以分为两种:隐式类型转换和显式类型转换(也称为强制类型转换)。

隐式类型转换

隐式转换是不需要编写代码来指定的转换,编译器会自动进行。

隐式转换是将一个较小范围的数据类型转换为较大范围的数据类型时,编译器会自动完成类型转换,这些转换是C#默认的以安全方式进行的转换,不会导致数据丢失。

例如,从int到long,从float到double等。

从小的整数类型转换为大的整数类型,从派生类转换为基类。将一个byte类型的变量赋值给int类型的变量,编译器会自动将byte类型转换为int类型,不需要显示转换。

byte b = 10;
int i = b; // 隐式转换,不需要显式转换int intValue = 42;
long longValue = intValue; // 隐式转换,从 int 到 long

显式转换

显示类型转换,即强制类型转换,需要在代码明确指定。

显式转换是将一个较大范围的数据类型转换为较小范围的数据类型时,或者将一个对象类型转换为另一个对象类型时,需要使用强制类型符号进行显示转换,强制转换会造成数据丢失。

int i = 10;
byte b = (byte)i; // 显式转换,需要使用强制类型转换符号double doubleValue = 3.14;
int intValue = (int)doubleValue; // 强制从 double 到 int,数据可能损失小数部分int intValue = 42;
float floatValue = (float)intValue; // 强制从 int 到 float,数据可能损失精度int intValue = 123;
string stringValue = intValue.ToString(); // 将 int 转换为字符串using System;namespace TypeConversionApplication
{class ExplicitConversion{static void Main(string[] args){double d = 5673.74;int i;// 强制转换 double 为 inti = (int)d;Console.WriteLine(i);Console.ReadKey();}}
}

C#类型转换方法

C# 提供了下列内置的类型转换方法:

序号方法 & 描述
1ToBoolean
如果可能的话,把类型转换为布尔型。
2ToByte
把类型转换为字节类型。
3ToChar
如果可能的话,把类型转换为单个 Unicode 字符类型。
4ToDateTime
把类型(整数或字符串类型)转换为 日期-时间 结构。
5ToDecimal
把浮点型或整数类型转换为十进制类型。
6ToDouble
把类型转换为双精度浮点型。
7ToInt16
把类型转换为 16 位整数类型。
8ToInt32
把类型转换为 32 位整数类型。
9ToInt64
把类型转换为 64 位整数类型。
10ToSbyte
把类型转换为有符号字节类型。
11ToSingle
把类型转换为小浮点数类型。
12ToString
把类型转换为字符串类型。
13ToType
把类型转换为指定类型。
14ToUInt16
把类型转换为 16 位无符号整数类型。
15ToUInt32
把类型转换为 32 位无符号整数类型。
16ToUInt64
把类型转换为 64 位无符号整数类型。

 这些方法都定义在 System.Convert 类中,使用时需要包含 System 命名空间。它们提供了一种安全的方式来执行类型转换,因为它们可以处理 null值,并且会抛出异常,如果转换不可能进行。

 例如,使用 Convert.ToInt32 方法将字符串转换为整数:

string str = "123";
int number = Convert.ToInt32(str); // 转换成功,number为123

 如果字符串不是有效的整数表示,Convert.ToInt32 将抛出 FormatException。

下面的实例把不同值的类型转换为字符串类型:

using System;namespace TypeConversionApplication
{class StringConversion{static void Main(string[] args){// 定义一个整型变量int i = 75;// 定义一个浮点型变量float f = 53.005f;// 定义一个双精度浮点型变量double d = 2345.7652;// 定义一个布尔型变量bool b = true;// 将整型变量转换为字符串并输出Console.WriteLine(i.ToString());// 将浮点型变量转换为字符串并输出Console.WriteLine(f.ToString());// 将双精度浮点型变量转换为字符串并输出Console.WriteLine(d.ToString());// 将布尔型变量转换为字符串并输出Console.WriteLine(b.ToString());// 等待用户按键后关闭控制台窗口Console.ReadKey();}}
}

 

在进行类型转换时需要注意以下几点:

隐式转换只能将较小范围的数据类型转换为较大范围的数据类型,不能将较大范围的数据类型转换为较小范围的数据类型;

显式转换可能会导致数据丢失或精度降低,需要进行数据类型的兼容性检查;

对于对象类型的转换,需要进行类型转换的兼容性检查和类型转换的安全性检查。

类型转换方法

C# 提供了多种类型转换方法,例如使用 Convert 类、Parse 方法和 TryParse 方法,这些方法可以帮助处理不同的数据类型之间的转换。

使用 Convert 类

Convert 类提供了一组静态方法,可以在各种基本数据类型之间进行转换。

string str = "123";
int num = Convert.ToInt32(str);

 使用 Parse 方法

Parse 方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常。

string str = "123.45";
double d = double.Parse(str);

使用 TryParse 方法

TryParse 方法类似于 Parse,但它不会抛出异常,而是返回一个布尔值指示转换是否成功。

string str = "123.45";
double d;
bool success = double.TryParse(str, out d);if (success) {Console.WriteLine("转换成功: " + d);
} else {Console.WriteLine("转换失败");
}

在 C# 中,内置的类型转换方法主要通过以下几种方式实现:隐式转换、显式转换(强制转换)、使用 Convert 类的方法、Parse 方法和 TryParse 方法,这些方法广泛应用于不同数据类型之间的转换。

以下是 C# 内置类型转换方法的表格:

方法类别方法描述
隐式转换自动进行的转换无需显式指定,通常用于安全的类型转换,如从较小类型到较大类型
显式转换(强制转换)(type)value需要显式指定,通常用于可能导致数据丢失或转换失败的情况
Convert 类方法Convert.ToBoolean(value)将指定类型转换为 Boolean
Convert.ToByte(value)将指定类型转换为 Byte
Convert.ToChar(value)将指定类型转换为 Char
Convert.ToDateTime(value)将指定类型转换为 DateTime
Convert.ToDecimal(value)将指定类型转换为 Decimal
Convert.ToDouble(value)将指定类型转换为 Double
Convert.ToInt16(value)将指定类型转换为 Int16(短整型)
Convert.ToInt32(value)将指定类型转换为 Int32(整型)
Convert.ToInt64(value)将指定类型转换为 Int64(长整型)
Convert.ToSByte(value)将指定类型转换为 SByte
Convert.ToSingle(value)将指定类型转换为 Single(单精度浮点型)
Convert.ToString(value)将指定类型转换为 String
Convert.ToUInt16(value)将指定类型转换为 UInt16(无符号短整型)
Convert.ToUInt32(value)将指定类型转换为 UInt32(无符号整型)
Convert.ToUInt64(value)将指定类型转换为 UInt64(无符号长整型)
Parse 方法Boolean.Parse(string)将字符串解析为 Boolean
Byte.Parse(string)将字符串解析为 Byte
Char.Parse(string)将字符串解析为 Char
DateTime.Parse(string)将字符串解析为 DateTime
Decimal.Parse(string)将字符串解析为 Decimal
Double.Parse(string)将字符串解析为 Double
Int16.Parse(string)将字符串解析为 Int16
Int32.Parse(string)将字符串解析为 Int32
Int64.Parse(string)将字符串解析为 Int64
SByte.Parse(string)将字符串解析为 SByte
Single.Parse(string)将字符串解析为 Single
UInt16.Parse(string)将字符串解析为 UInt16
UInt32.Parse(string)将字符串解析为 UInt32
UInt64.Parse(string)将字符串解析为 UInt64
TryParse 方法Boolean.TryParse(string, out bool)尝试将字符串解析为 Boolean,返回布尔值表示是否成功
Byte.TryParse(string, out byte)尝试将字符串解析为 Byte,返回布尔值表示是否成功
Char.TryParse(string, out char)尝试将字符串解析为 Char,返回布尔值表示是否成功
DateTime.TryParse(string, out DateTime)尝试将字符串解析为 DateTime,返回布尔值表示是否成功
Decimal.TryParse(string, out decimal)尝试将字符串解析为 Decimal,返回布尔值表示是否成功
Double.TryParse(string, out double)尝试将字符串解析为 Double,返回布尔值表示是否成功
Int16.TryParse(string, out short)尝试将字符串解析为 Int16,返回布尔值表示是否成功
Int32.TryParse(string, out int)尝试将字符串解析为 Int32,返回布尔值表示是否成功
Int64.TryParse(string, out long)尝试将字符串解析为 Int64,返回布尔值表示是否成功
SByte.TryParse(string, out sbyte)尝试将字符串解析为 SByte,返回布尔值表示是否成功
Single.TryParse(string, out float)尝试将字符串解析为 Single,返回布尔值表示是否成功
UInt16.TryParse(string, out ushort)尝试将字符串解析为 UInt16,返回布尔值表示是否成功
UInt32.TryParse(string, out uint)尝试将字符串解析为 UInt32,返回布尔值表示是否成功
UInt64.TryParse(string, out ulong)尝试将字符串解析为 UInt64,返回布尔值表示是否成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM旅游系统

摘要 旅游业正处于快速发展阶段,旅游系统的建设已经成为了旅游业发展的重要核心问题。在这样的背景下,SSM框架正逐步发展为一种主要的架构。但目前青海省旅游业信息化的发展仍面临诸多问题,包括系统功能不完善、用户体验不佳、数据管理不规范…

c语言中的字符函数

1.字符分类函数 c语言中有一系列函数是专门做字符分类的&#xff0c;也就是一个字符属于什么类型的字符。这些函数的使用需要包含一个头文件是ctype.h 可能你看这些感觉很懵&#xff0c;我以islower举例 #include<ctype.h> int main() {int retislower(A);printf("…

Apache Doris 之 Docker 部署篇

前言 在现代数据驱动的商业环境中&#xff0c;实时数据分析和高并发查询能力是企业成功的关键因素之一。传统的数据仓库和分析工具在面对大规模数据处理和实时分析需求时&#xff0c;往往力不从心。Apache Doris 作为一个现代的 MPP 数据库管理系统&#xff0c;凭借其强大的查…

uni微信小程序使用lottie

在uni插件市场找到 lottie-uni https://ext.dcloud.net.cn/plugin?id1044按照文档要求安装 HBuilderX 引入 下载或导入示例获取插件 import lottie from /common/lottie-miniprogram.jsindex.vue <template><uni-popupref"popup"type"center"ba…

俄罗斯ozon爆款推荐丨ozon学生受众产品

在俄罗斯电商平台OZON上&#xff0c;学生受众是一个庞大且活跃的群体。为了满足他们的需求&#xff0c;OZON平台上涌现出了一系列受学生欢迎的爆款产品。以下是一些针对学生受众的OZON爆款推荐&#xff1a; OZON选品工具&#xff1a;D。DDqbt。COM/74rD Top1 UNO纸牌游戏 俄语…

【OpenGL学习】OpenGL不同版本渲染管线汇总

文章目录 一、《OpenGL编程指南》第6版/第7版的渲染管线二、《OpenGL编程指南》第8版/第9版的渲染管线 一、《OpenGL编程指南》第6版/第7版的渲染管线 图1. OpenGL 2.1、OpenGL 3.0、OpenGL 3.1 等支持的渲染管线 二、《OpenGL编程指南》第8版/第9版的渲染管线 图2. OpenGL …

windows 下安装Nuclei 详细教程

一、软件介绍 Nuclei是一款基于YAML语法模板的开发的定制化快速漏洞扫描器。它使用Go语言开发&#xff0c;具有很强的可配置性、可扩展性和易用性。 二、下载安装 官网&#xff1a;https://docs.projectdiscovery.io/tools/nuclei/overview Nuclei项目地址&#xff1a;​​…

记一次 .NET某机械臂上位系统 卡死分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他们的程序会偶发性的卡死一段时间&#xff0c;然后又好了&#xff0c;让我帮忙看下怎么回事&#xff1f;窗体类的程序解决起来相对来说比较简单&#xff0c;让朋友用procdump自动抓一个卡死时的dump&#x…

0. 云原生之基于乌班图远程开发

云原生专栏大纲 文章目录 安装乌班图配置静态IP重置root密码开启root远程登录开启远程SSH访问安装docker安装docker-compose安装Edge浏览器安装搜狗输入法安装TeamViewer安装虚拟显示器安装JDK安装maven安装vscodevscode插件安装VSCode配置maven、git、jdk、自动报错vscode快捷…

30v-180V降3.3V100mA恒压WT5107

30v-180V降3.3V100mA恒压WT5107 WT5107是一款恒压单片机供电芯片&#xff0c;它可以30V-180V直流电转换成稳定的3.3V直流电&#xff08;最大输出电流300mA&#xff09;&#xff0c;为各种单片机供电。WT5107的应用也非常广泛。它可以用于智能家居、LED照明、电子玩具等领域。比…

jupyter使用的一个奇怪bug——SyntaxError: invalid non-printable character U+00A0

bug来由&#xff1a;从其他部分例如kaggle里复制来的代码直接粘贴在jupyter notebook里&#xff0c;每一行代码都会出现&#xff1a; Cell In[5], line 1 warnings.filterwarnings(ignore) ^ SyntaxError: invalid non-printable character U00A0 单元格 In[5]&#xff0c;第 …

多网页登录Cookie免登通俗理解

背景&#xff0c;现在有A、B两个系统&#xff0c;其中B是乾坤框架的微前端&#xff0c;里面又有若干可以单独运行的系统C、D、E、F&#xff0c;现在的目标是&#xff0c;如果没有登录过其中任一系统&#xff0c;则需要跳转登录页登录&#xff0c;登录后&#xff0c;所有的A-F都…

Python 自动化测试入门有哪些内容?

自动化测试是软件测试领域中的一个重要技术&#xff0c;它利用脚本和工具来执行测试任务&#xff0c;减少了人工操作的工作量和时间消耗。Python 是一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于自动化测试领域。本文将从0到1讲解如何使用 Python 进行自动化测试&…

网络编程(一)基本概念

文章目录 一、概念&#xff08;一&#xff09;网络发展阶段1. ARPAnet阶段2. TCP/IP两个协议阶段3. 网络体系结构和OSI开放系统互联模型4. TCP/IP协议簇体系结构&#xff08;1&#xff09; 应用层&#xff1a;&#xff08;2&#xff09;传输层&#xff1a;&#xff08;3&#x…

白名单在数据防篡改方面的优势与局限

白名单作为一种安全机制&#xff0c;其主要目的是通过预先设定受信任的程序、文件或用户列表&#xff0c;来限制系统资源的访问和执行权限。这种机制在防止未授权的程序或文件运行方面具有一定的效果&#xff0c;从而在一定程度上减少病毒入侵的机会。然而&#xff0c;当我们探…

读书笔记-《人人都是产品经理》

在开发工程师与产品经理的段子中&#xff0c;常看到“人人都是产品经理”这句话&#xff0c;用来调侃这个岗位似乎没有什么门槛。 很明显&#xff0c;这句话的出处&#xff0c;即本书作者想表达的是每个人都可以运用产品思维去解决问题。 01 产品 产品&#xff1a;用来解决某…

python中scrapy

安装环境 pip install scrapy 发现Twisted版本不匹配 卸载pip uninstall Twisted 安装 pip install Twisted22.10.0 新建scrapy项目 scrapy startproject 项目名 注意&#xff1a;项目名称不允许使用数字开头&#xff0c;也不能包含中文 eg: scrapy startproject scrapy_baidu_…

热重启(硬重启)获取Bitlocker密钥取证

计算机内存&#xff08;条&#xff09;在系统运行时存储了大量敏感信息&#xff0c;当断电后&#xff0c;内存中的数据荡然无存。反之&#xff0c;当一直通电的情况下&#xff0c;内存中的一些敏感数据一直存在。当然&#xff0c;正如某些人了解的&#xff0c;当断电后&#xf…

管道光电液位传感器应用在哪些设备

管道光电液位传感器在现代智能设备中扮演着至关重要的角色&#xff0c;特别是在需要检测水管缺水的应用场景中。与传统的浮球开关相比&#xff0c;这种传感器具有高可靠性、稳定性和不易卡死等优点。其先进的光学感应原理无需机械运动&#xff0c;确保了长久的寿命和稳定的性能…

《CGT行业监管及上市路径解析》——锦天城高级合伙人虞正春先生在线分享

细胞和基因治疗&#xff08;Cell and Gene Therapy, CGT&#xff09;已成为近年来全球药物研发的热点与前沿领域&#xff0c;也得到了国家政策的大力支持。《“十四五”生物经济发展规划》中提到“发展基因诊疗、干细胞治疗、免疫细胞等新技术”&#xff0c;“围绕加快创新药上…