LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 中的几种类型的转换

admin
2024年11月10日 9:32 本文热度 201

前言

在 C# 中,变量在声明后就无法再次声明或无法分配另一种类型的值,除非该类型可以隐式转换为变量的类型。但有时我们可能需要将值复制到其他类型的变量或方法参数中。这意味着我们需要对类型进行转换操作,而在 C# 中,可以通过些方式实现类型的转换。

类型转换

1、隐式转换

这种转换是自动进行的,不需要特殊语法,因为转换始终会成功,并且不会丢失任何数据。一般是发生在从较小整数类型到较大整数类型的转换以及从派生类到基类的转换。

float pi=3.14;// 隐式转换double qty=pi;
int i = pi; // 隐式转换long num = i;
public class BasePrint{    public void Message()    {        Console.WriteLine("基础打印");    }}public class BarcodePrint: BasePrint{    public void BarcodeMessage()    {        Console.WriteLine("条码打印");    }}
BarcodePrint barcode = new BarcodePrint();// 隐式转换BasePrint base = barcode;
引用类型的隐式转换,它是从一个类转换为该类的任何一个直接或间接的基类或接口的情况。因为派生类始终包含基类的所有成员,所以能隐式转换。

2、显式转换

这种转换需要明确指出,通常涉及到范围较小的类型到范围较大的类型,或者可能丢失信息的转换。显式转换也称为强制转换
double price = 234.70;int qty;// 强制将 double 转换 int.qty = (int)price;
public class ZTextBox:TextBox{}
ZTextBox txtProduct = new ZTextBox();// 显式将 ZTextBox 转换为 TextBoxTextBox txtBoxcode = (TextBox)txtProduct; 

3、类型转换方法

对于类型转换方法,下面我们了解几种方法来进行类型转换。

  • Convert类:提供了一系列静态方法,用于在不同类型之间进行转换。

// 日期转字符串string today = Convert.ToString(DateTime.Now);// 字符串转数值double price = Convert.ToDouble("231.40");// 数值0转布尔值bool result = Convert.ToBoolean(0);

  • Parse方法:用于完成类型转换,如果转换失败,则抛出异常。

使用该方法需要类型提供了Parse方法。如int.Parse、double.Parse等。
// 字符串转日期DateTime dateTime = DateTime.Parse("2024-01-11");// 字符串转数值double price = double.Parse("231.40");// 字符串true转为布尔值bool result = bool.Parse("true");

  • TryParse方法:尝试转换,返回值为布尔值,代表是否转换成功。

    使用该方法需要类型提供了TryParse方法。如int.TryParse、double.TryParse等。

// 字符串尝试转日期DateTime.TryParse("2024-01-11", out DateTime dateTime);// 字符串尝试转数值double.TryParse("120.50", out double price);

  • ChangeType方法:可以将一个类型转换为指定的类型。

它是 Convert 类中提供的一个方法,可以将一个类型转换为其它类型。
long qty = 123;object result = Convert.ChangeType(qty, typeof(int));

4、用户定义的转换

用户定义的转换使用自定义的特殊方法,以支持在不具有基类和派生类关系的自定义类型之间实现显式和隐式转换。通过在类中定义转换运算符来定义自己的类型转换规则。通过在类型中定义 implicit 或 explicit 关键字。
// 定义摄氏温度Celsius celsius = new Celsius();// 设定温度 20celsius.Temperature = 20;// 将摄氏温度转为华氏温度Fahrenheit fahrenheit = (Fahrenheit)celsius;// 输出华氏温度为68Console.WriteLine(fahrenheit.Temperature);// 将华氏温度转为摄氏温度Celsius fahrenheitToCelsius = (Celsius)fahrenheit;// 输出摄氏温度为20Console.WriteLine(fahrenheitToCelsius.Temperature);
/// <summary>/// 摄氏温度/// </summary>public class Celsius{    public double Temperature { get; set; }
   public static implicit operator Fahrenheit(Celsius celsius)    {        return new Fahrenheit { Temperature = (celsius.Temperature*9 /5)+32};    }}
/// <summary>/// 华氏温度/// </summary>public class Fahrenheit{    public double Temperature { get; set; }
   public static implicit operator Celsius(Fahrenheit fahrenheit)    {        return new Celsius { Temperature = (fahrenheit.Temperature-32)*5/9};    }}

小结

以上是C#中常见的类型转换方式,每种方式都有其适用的场景和限制。在编程中,应根据不同场景和限制选择合适的类型转换方法。


该文章在 2024/11/11 10:23:00 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved