服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#数据类型转换(显式转型、隐式转型、强制转型)

C#数据类型转换(显式转型、隐式转型、强制转型)

2022-12-20 14:50痴者工良 C#

本文详细讲解了C#数据类型转换(显式转型、隐式转型、强制转型),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

C# 的类型转换有显式转型 和 隐式转型 两种方式。

  • 显式转型:有可能引发异常、精确度丢失及其他问题的转换方式。需要使用手段进行转换操作。
  • 隐式转型:不会改变原有数据精确度、引发异常,不会发生任何问题的转换方式。由系统自动转换。

不同类型的数据进行操作(加减乘除赋值等等),是需要进行 类型转换 后,才能继续操作。所以需要“类型转换”。

 

隐式转型

隐式转型容易理解,当两种或多种数据类型进行某种操作时,不需要干预,系统会自动进行隐式转换。

int i = 66666;
long b = i;    //转为 long 类型后为 b 赋值

通常情况下,多种 值类型 进行计算时,系统会自动进行隐式转型,并且总是转为范围更大的数据类型,并且不会发生精确度变化、数字大小变化等等。

C#数据类型转换(显式转型、隐式转型、强制转型)

C#数据类型转换(显式转型、隐式转型、强制转型)

 

显式转型

问题是,但你需要把一个 long 类型的数据转成 int 时,又或者让 string 与 int 互转,当数据小数点太多时,这时候就必须使用显式转型。

在继续下列教程前,要想说明一点。

char 是整型!

虽然char存储的是字符而不是数字,但它的确是整型,翻回上面看一下图,可以发现。

也就是说,char是可以参与算术运算的。但并不是直接参与,而是char的基础值。c# 中的char值是基于Unicode的。通过Unicode,任意字符都可以解释成数字。

一,使用 ([type]) 转型操作符

此方法适用与值类型转换( string属于引用类型)

在需要转换的变量前加上( [类型] )即可

请仔细观察下面两图的差异

C#数据类型转换(显式转型、隐式转型、强制转型)

C#数据类型转换(显式转型、隐式转型、强制转型)

第二张图中的代码中,第二行,为 int b = (int)i;

在需要转换的变量前使用 ([type]) 这种格式进行转换,如(int)、(float)、(long)

注意,

此种方法只能对值类型数据进行转换。

不应将范围大的类型 往 小 转换 或 将浮点型转为整形,不能将超范围的往小了转。

例如 float 转为 int,精确度会被自动丢失

C#数据类型转换(显式转型、隐式转型、强制转型)

输出 666

将大于其类型范围的数给它时,会发生溢出。

C#数据类型转换(显式转型、隐式转型、强制转型)

char 可以直接跟 int 或 long 使用。

int a ='1' + '3';  //小转大
char b = (char)a;  //大转小
int c = 'a' + '5';  //char可以直接转为 int
注意上下例子的不同 ,int 直接转为char,会报错

C#数据类型转换(显式转型、隐式转型、强制转型)

第二,[Type].Parse()

([type]) 方法是无法在值类型、引用类型( string 类型)间转换的。

但每种数据类型都提供一个Parse()方法,它允许把字符串转成对应的 数值类型。

int.Parse()

float.Parse()

请看例子

string str = "666";
long i = int.Parse(str);
Console.WriteLine($"{i},{i.GetType()}");
Console.ReadKey();

(图如)

C#数据类型转换(显式转型、隐式转型、强制转型)

注意,

Parse() 是专为 string 类型转成 值类型 提供功能的!

Parse() 是为符合数字格式的 string 类型进行转换!

下面的例子都是错误用法 !

Parse() 是将符合数字格式的字符串转为数字,也就是说,

  • ( )括号内的必须为字符串 !
  • 字符串的内容必须为数字 !

例子 1 ( ) 括号内的内容不是字符串

C#数据类型转换(显式转型、隐式转型、强制转型)

例子 2 变量 str 的内容不是 有效数字格式

C#数据类型转换(显式转型、隐式转型、强制转型)

第三,[Type].TryParse()

格式如下

  • int.TryParse()
  • float.TryParse()

.TryParse()与.Parse()相似,但是使用形式不太一样,

[类型].TryParse(要更改的字符串,out 存储到哪个变量); 

最重要的不同点在于,.TryParse() 在转换失败时,不会引发异常,而是返回 flase

例子

        string str = "666";
      int i;
      bool b = int.TryParse(str,out i);    //接收转换结果
或者

      string str = "666";
      int i;
      int.TryParse(str,out i);    //不接收转换结果

如果你不知道 out 的使用,请查阅C#中的out参数/ref参数/params可变参数

第四,System.Convert

方法例子

System.Convert.ToSingle();

System.Convert.ToInt32();

System.Convert.ToDouble();

System.Convert 允许将一种类型转为另一种类型。

常见 类型列表: char、sbyte、short、int、long、uint、ulong、float、double、decimal、string、bool ... ...

但是,同样需要格式支持!

string str = "666";
int a= System.Convert.ToInt32(str);        //正确

string str = "666.66";
int a= System.Convert.ToInt32(str);        //报错

int a = 66666;
bool c = System.Convert.ToBoolean(a);        //正确

string str = "666.66";
bool c = System.Convert.ToBoolean(str);        //报错

System.Convert 在转换是也需要注意 格式 才能转换成功。

同样,此方式也会发生精确度、数字大小改变

C#数据类型转换(显式转型、隐式转型、强制转型)

 

第五,System.Convert

.Tostring()

每种数据类型都提供了转为字符串类型的方法 ToString()

无论是值类型还是DateTime 等各种引用类型。

ToString()使用方法最为简单,请留意下列例子的红色背景部分

using System;
using System.IO;

public class Test
{

  static void Main()
  {
      int a = 666;
      string aa = a.ToString();
      Console.WriteLine($"{aa}");

      float b = 666.666F;
      string bb = b.ToString();
      Console.WriteLine($"{bb}");

      DateTime c = DateTime.Now;
      string cc = c.ToString();
      Console.WriteLine($"{cc}");

      FileInfo d = new FileInfo("E:\\test.txt");
      string dd = d.ToString();
      Console.WriteLine($"{dd}");

      string ee;
      try
      {
          int x = 1;
          int y = 0;
          int e = x / y;
      }
      catch (Exception ex)
      {
          ee = ex.ToString();
          Console.WriteLine($"{ee}");
      }


      Console.ReadKey();
  }

}

看到了吧?无论什么类型,只需在后面加上 ToString() , 都能 输出 string 类型的内容。(不是转为 string 类型!)

当然,ToString() 是一个方法,并提供了 一下传入参数,每种类型都有几个重载的 TOString() 方法,例如DateTime的

public string ToString(string format, IFormatProvider provider);
public string ToString(string format);
public string ToString(IFormatProvider provider);
public override string ToString();

其它方面不再赘述。

复制下列代码到控制台,看看输出了什么

using System;
using System.IO;

public class Test
{

  static void Main()
  {
      int a = 666;
      string aa = a.ToString();
      Console.WriteLine($"{aa}");

      float b = 666.666F;
      string bb = b.ToString();
      Console.WriteLine($"{bb}");

      DateTime c = DateTime.Now;
      string cc = c.ToString();
      Console.WriteLine($"{cc}");

      FileInfo d = new FileInfo("E:\\test.txt");
      string dd = d.ToString();
      Console.WriteLine($"{dd}");

      string ee;
      try
      {
          int x = 1;
          int y = 0;
          int e = x / y;
      }
      catch (Exception ex)
      {
          ee = ex.ToString();
          Console.WriteLine($"{ee}");
      }


      Console.ReadKey();
  }

}

到此这篇关于C#数据类型转换(显式转型、隐式转型、强制转型)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/whuanle/p/9938918.html

延伸 · 阅读

精彩推荐
  • C#C#利用delegate实现Javascript的each方法

    C#利用delegate实现Javascript的each方法

    这篇文章主要为大家介绍了介绍了C#利用delegate实现Javascript的each方法,感兴趣的朋友可以参考一下...

    JackWang-CUMT10012021-11-08
  • C#C#程序执行时间长查询速度慢解决方案

    C#程序执行时间长查询速度慢解决方案

    这篇文章主要介绍了C#程序执行时间长查询速度慢解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    叶丶梓轩3782022-09-24
  • C#C#创建及读取DAT文件操作

    C#创建及读取DAT文件操作

    这篇文章主要介绍了C#创建及读取DAT文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    秋漓10862022-10-21
  • C#c#实现获取字符串阵列中元素最长或最短的长度

    c#实现获取字符串阵列中元素最长或最短的长度

    下面小编就为大家分享一篇c#实现获取字符串阵列中元素最长或最短的长度方法,具有很好的参考价值,希望对大家有所帮助...

    杨明波(Leo Yang)3872022-02-15
  • C#Unity ScrollView实现无限滑动效果

    Unity ScrollView实现无限滑动效果

    这篇文章主要为大家详细介绍了Unity ScrollView实现无限滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Hello Bug.8282022-11-28
  • C#C# AttributeUsage使用案例详解

    C# AttributeUsage使用案例详解

    这篇文章主要介绍了C# AttributeUsage使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    honey1993967892022-12-01
  • C#macOS系统下Vscode的python配置教程

    macOS系统下Vscode的python配置教程

    这篇文章主要介绍了macOS系统下Vscode的python配置教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要...

    AbelSu10502022-08-31
  • C#c# 使用谷歌身份验证器GoogleAuthenticator的示例

    c# 使用谷歌身份验证器GoogleAuthenticator的示例

    这篇文章主要介绍了c# 使用谷歌身份验证器GoogleAuthenticator的示例,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    心如大海6332022-10-31