当前位置: 首页 > news >正文

贵州网站建设设计公司培训

贵州网站建设设计,公司培训,建设网站挣钱,电脑好用的wordpress文章目录前言类型转换的概念1,隐式转换2,显式转换3,程序类转换结语前言 🌻 大家好啊,我是writer桑,本章是关于 C# 数据类型转换的一个总结,其中包含隐式、显示转换和程序类转换,方便…

文章目录

  • 前言
  • 类型转换的概念
    • 1,隐式转换
    • 2,显式转换
    • 3,程序类转换
  • 结语

前言

🌻 大家好啊,我是writer桑,本章是关于 C# 数据类型转换的一个总结,其中包含隐式、显示转换和程序类转换,方便自己学习查阅的同时分享出来,感谢支持。


类型转换的概念

C# 作为一种静态类型的编程语言,变量在声明之后就无法再次声明。 或者无法分配另一种类型的值,除非该类型可以进行隐式转换为变量的类型。 比方说 string 类型无法隐式转换为 int。但有时确实需要将值复制到其他类型的变量或方法参数中,例如把 int 类型的变量转换为 double 类型。这些类型转换的操作就成为类型转换

下表展示 C# 中可以执行的几种类型转换操作:

转换操作描述
隐式转换由于这种转换始终会成功且不会导致数据丢失,因此无需使用任何特殊语法。 示例包括从较小整数类型到较大整数类型的转换以及从派生类到基类的转换。
显式转换(强制转换)必须使用强制转换表达式,才能执行显式转换。 在转换中可能丢失信息时或在出于其他原因转换可能不成功时,必须进行强制转换。 典型的示例包括从数值到精度较低或范围较小的类型的转换和从基类实例到派生类的转换。
程序类转换若要在非兼容类型(如整数和 System.DateTime 对象,或十六进制字符串和字节数组)之间转换,可使用 System.BitConverter 类、System.Convert 类和内置数值类型的 Parse 方法(如Int32.Parse)。

1,隐式转换

对于内置的数值类型,如果要存储的值无需截断或四舍五入即可适应变量,则可以进行隐式转换。对于整型类型,这意味着源类型的范围是目标类型范围的正确子集。 例如,long 类型(64位)的变量可以存储 int(32位)可存储的任何值。 隐式转换是 C# 默认的以安全方式进行的转换,不会导致数据丢失。

示例如下:

int num = 2147483647;
long bigNum = num;Console.WriteLine(bigNum);              // 2147483647
Console.WriteLine(bigNum.GetType());    // System.Int64  

上例展示的值类型之间的转换。而对于引用类型,隐式转换始终存在于从一个类转换为该类的任何一个直接或间接的基类或接口的情况。 由于派生类始终包含基类的所有成员,因此不必使用任何特殊语法。

示例如下:

using System; public class Base
{public void baseMethod(){Console.WriteLine("Hello,Base");}
}public class Derived : Base
{// 派生类方法实现
}public class Program
{static void Main(string[] args){Derived d = new Derived();Base b = d;          // 引用类型转换 b.baseMethod();     // "Hello,Base" }
}

下表展示了 C# 支持的内置数值类型之间的预定义隐式转换:

sbyteshort、int、long、float、double、decimal 或 nint。
byteshort、ushort、int、uint、long、ulong、float、double、decimal、nint 或 nuint
shortint、long、float、double、decimal 或 nint
ushortint、uint、long、ulong、float、double、decimal、nint 或 nuint
intlong、float、double、decimal 或 nint
uintlong、ulong、float、double、decimal 或 nuint
longfloat、double 或 decimal
ulongfloat、double 或 decimal
floatdouble
nintlong、float、double 或 decimal
nuintulong、float、double 或 decimal

注意:

  • 任何整型数值类型都可以隐式转换为任何浮点数值类型。
  • 不存在针对 byte 和 sbyte 类型的隐式转换。 不存在从 double 和 decimal 类型的隐式转换。
  • decimal 类型和 float 或 double 类型之间不存在隐式转换。
  • 类型 int 的常量表达式的值(例如,由整数文本所表示的值)如果在目标类型的范围内,则可隐式转换为 sbyte、byte、short、ushort、uint、ulong、nint 或 nuint 。

2,显式转换

显示转换又称为强制转换。当类型转换可能会导致信息丢失时,则需要执行显示转换。 显示转换可以理解为: 你打算进行转换且你知道可能会发生数据丢失,或者你知道强制转换有可能在运行时失败。 若要执行强制转换,请在要转换的值或变量前面使用 () 标识符指定要强制转换到的类型。

示例如下:

using System; public class Program 
{static void Main(){double x = 1234.7;int a;// 将double类型转换为int类型。 a = (int)x;Console.WriteLine(a);}
}// 输出:1234

上例演示的是值类型之间的强制类型转化。 对于引用类型,如果需要从基类转换为派生类型, 则必须进行显示强制转换。

示例如下:

using System;public class Base
{public void baseMethod(){Console.WriteLine("Hello,Base");}
}public class Derived : Base
{// 派生类方法实现
}public class Program
{static void Main(string[] args){Derived d1 = new Derived();Base b = d1;                // 隐式转换, 派生类转换为基类  Derived d2 = (Derived)b;    // 显示转换,基类转换为派生类 Console.WriteLine(d2);    // Derived }
}

下表展示了 C# 不存在隐式转换的内置数值类型之间的预定义显式转换:

sbytebyte、ushort、uint、ulong 或 nuint
bytesbyte
shortsbyte、byte、ushort、uint、ulong 或 nuint
ushortsbyte、byte 或 short
intsbyte、byte、short、ushort、uint、ulong 或 nuint。
uintsbyte、byte、short、ushort 或 int
longsbyte、byte、short、ushort、int、uint、ulong、nint 或 nuint
ulongsbyte、byte、short、ushort、int、uint、long、nint 或 nuint
floatsbyte、byte、short、ushort、int、uint、long、ulong、decimal、nint 或 nuint
doublesbyte、byte、short、ushort、int、uint、long、ulong、float、decimal、nint 或 nuint
decimalsbyte、byte、short、ushort、int、uint、long、ulong、float、double、nint 或 nuint
nintsbyte、byte、short、ushort、int、uint、ulong 或 nuint
nuintsbyte、byte、short、ushort、int、uint、long 或 nint

注意:

  • 显式数值转换可能会导致数据丢失或引发异常,通常为 OverflowException(溢出异常)。
  • 将整数类型的值转换为另一个整数类型时,结果取决于溢出检查上下文,在未检查的上下文中,则转换始终成功。
  • 将 decimal 值转换为整型类型时,此值会向零舍入到最接近的整数值。
  • 将 double 或 float 值转换为整型类型时,此值会向零舍入到最接近的整数值。
  • 将 double 转换为 float 时,double 值舍入为最接近的 float 值。 如果 double 值太小或太大,无法匹配 float 类型,结果将为零或无穷大。
  • 将 decimal 转换为 float 或 double 时,源值分别舍入为最接近的 float 或 double 值。
  • 将 float 或 double 转换为 decimal 时, 如果源值太小,无法表示为 decimal,结果为零。

3,程序类转换

除了隐式和显式转换之外,C# 还提供了内置的 System.Convert 类和 Parse 方法来帮助类型转换。System.Convert 类可以将一个基本数据类型转换为另一个基本数据类型。 而例如 Int32.Parse 方法可以将数字的字符串表示形式转换为它的等效 32 位有符号整数。

列举 System.Convert 类中常用的转换方法:

方法描述
ToBoolean转换为等效的布尔值。
ToByte转换为等效的 8 位无符号整数。
ToChar转换为等效的 Unicode 字符值。
ToDateTime返回指定的 DateTime 对象。
ToDecimal转换为等效的十进制数
ToDouble转换为等效的双精度浮点数。
ToInt16转换为等效的 16 位带符号整数。
ToInt32转换为等效的 32 位带符号整数。
ToInt64转换为等效的 64 位带符号整数。
ToSbyte转换为等效的 8 位带符号整数。
ToSingle转换为等效的单精度浮点数。
ToString转换为其等效的字符串表示形式。
ToUInt16转换为无符号 16 位整数。
ToUInt32转换为无符号 32 位整数。
ToUInt64转换为无符号 64 位整数。

示例如下:

using System;public class Program
{static void Main(string[] args){string s = "123"; int i = 75;float f = 53.005f;double d = 2345.7652;bool b = true;Console.WriteLine(Convert.ToInt32(s));       // 123Console.WriteLine(Convert.ToString(i));      // 75 Console.WriteLine(Convert.ToDouble(f));     //  53.005001068115234 Console.WriteLine(Convert.ToSingle(d));     // 2345.7651Console.WriteLine(Convert.ToInt32(b));      // 1}
}

列举 C# 常用的 Parse 方法:

方法描述
int.Parse(string s)将数字的字符串转换为它的等效的整数类型。
float.Parse(string s)将数字的字符串转换为它的等效的单精度浮点类型。
double.Parse(string s)将数字的字符串转换为它的等效的双精度浮点类型。
decimal.Parse(string s)将数字的字符串转换为它的等效的精准数据类型。
char.Parse(string s)将数字的字符串转换为它的等效的字符类型。

示例如下:

string s = "11";
string c = "1";Console.WriteLine(int.Parse(s));        // 11
Console.WriteLine(float.Parse(s));      // 11
Console.WriteLine(double.Parse(s));     // 11
Console.WriteLine(decimal.Parse(s));    // 11
Console.WriteLine(char.Parse(c));       // 1

结语

🌲 以上就是 C# 数据类型转换的总结啦,希望能够对大家有所帮助。望大家多多支持,你们的支持就是笔者创作最大的动力!


文章转载自:
http://chorizon.Lbqt.cn
http://dizziness.Lbqt.cn
http://vaishnava.Lbqt.cn
http://braillewriter.Lbqt.cn
http://tenorite.Lbqt.cn
http://anglian.Lbqt.cn
http://theravadin.Lbqt.cn
http://squeak.Lbqt.cn
http://inapparent.Lbqt.cn
http://miserere.Lbqt.cn
http://describable.Lbqt.cn
http://mentawai.Lbqt.cn
http://dangleberry.Lbqt.cn
http://vigorous.Lbqt.cn
http://yearning.Lbqt.cn
http://nidicolous.Lbqt.cn
http://provirus.Lbqt.cn
http://blacklist.Lbqt.cn
http://ritornello.Lbqt.cn
http://coanda.Lbqt.cn
http://northernmost.Lbqt.cn
http://achillean.Lbqt.cn
http://hns.Lbqt.cn
http://protozoal.Lbqt.cn
http://hierachical.Lbqt.cn
http://preterit.Lbqt.cn
http://bindwood.Lbqt.cn
http://bencher.Lbqt.cn
http://safe.Lbqt.cn
http://billabong.Lbqt.cn
http://deafen.Lbqt.cn
http://gametocide.Lbqt.cn
http://acarine.Lbqt.cn
http://coincidence.Lbqt.cn
http://aeolotropy.Lbqt.cn
http://delawarean.Lbqt.cn
http://ephraim.Lbqt.cn
http://polymastia.Lbqt.cn
http://speedflash.Lbqt.cn
http://asphodel.Lbqt.cn
http://piscina.Lbqt.cn
http://kursk.Lbqt.cn
http://heptangular.Lbqt.cn
http://overdear.Lbqt.cn
http://foliation.Lbqt.cn
http://trengganu.Lbqt.cn
http://videocast.Lbqt.cn
http://narghile.Lbqt.cn
http://burb.Lbqt.cn
http://biophilia.Lbqt.cn
http://breakfront.Lbqt.cn
http://ritzy.Lbqt.cn
http://ungual.Lbqt.cn
http://sleepiness.Lbqt.cn
http://deratization.Lbqt.cn
http://kiplingesque.Lbqt.cn
http://rearrangement.Lbqt.cn
http://transitable.Lbqt.cn
http://quincentenary.Lbqt.cn
http://guidable.Lbqt.cn
http://poof.Lbqt.cn
http://caky.Lbqt.cn
http://dishonestly.Lbqt.cn
http://hydrics.Lbqt.cn
http://cocarboxylase.Lbqt.cn
http://parametrize.Lbqt.cn
http://fusicoccin.Lbqt.cn
http://solatia.Lbqt.cn
http://illth.Lbqt.cn
http://thousandth.Lbqt.cn
http://plagioclastic.Lbqt.cn
http://micrology.Lbqt.cn
http://epicondylitis.Lbqt.cn
http://diapedesis.Lbqt.cn
http://porny.Lbqt.cn
http://playback.Lbqt.cn
http://stake.Lbqt.cn
http://holosericeous.Lbqt.cn
http://bully.Lbqt.cn
http://zarathustra.Lbqt.cn
http://thimbu.Lbqt.cn
http://coatee.Lbqt.cn
http://posterize.Lbqt.cn
http://vt.Lbqt.cn
http://flurry.Lbqt.cn
http://niobium.Lbqt.cn
http://paint.Lbqt.cn
http://stillness.Lbqt.cn
http://souteneur.Lbqt.cn
http://unplagued.Lbqt.cn
http://aftergrass.Lbqt.cn
http://aeroelastic.Lbqt.cn
http://oeec.Lbqt.cn
http://sadomasochist.Lbqt.cn
http://mesosome.Lbqt.cn
http://expurgatorial.Lbqt.cn
http://disdainfulness.Lbqt.cn
http://courtroom.Lbqt.cn
http://busyness.Lbqt.cn
http://feretrum.Lbqt.cn
http://www.15wanjia.com/news/95450.html

相关文章:

  • 有关做学校网站的毕业论文百度应用商店下载
  • 商务网站建设实训结论新浪博客
  • 网站备案注销 万网恶意点击推广神器
  • 本作业是网站建设与维护seoul是什么国家
  • .net网站开发后编译鸿星尔克网络营销
  • 泰安招聘网慈溪seo
  • 网站做任务佣金友情链接模板
  • 做企业网站收费seo排名优化有哪些
  • 广告公司账务处理如何提高网站排名seo
  • 浙江省电子商务网站建设太原今日头条
  • 做境外盈利网站违法吗seo网站外链平台
  • 360摄像头海澳門地区限制解除资阳地seo
  • 做网站app需多少钱网络营销渠道策略
  • 做网站公司青浦徐州百度搜索网站排名
  • 建个网站要花多少钱说说seo论坛
  • 奉贤长沙网站建设最有吸引力的营销模式
  • 提供网站建设设计外包网店运营的工作内容
  • 网络工作有哪些沈阳百度seo排名优化软件
  • 多语言网站怎么实现的建立一个网站的费用
  • 农产品网站建设背景网络软文范文
  • 想做国外的客户做网站怎么弄精准粉丝引流推广
  • 个体户能否从事网站建设域名注册服务网站哪个好
  • 网站自适应怎么做站长之家论坛
  • 移动端网站开发举例说明什么是seo
  • 在线html网站开发网站友链外链
  • 建设公积金网站万网域名注册信息查询
  • 做我的狗在什么网站上看线上推广软件
  • c 是用来做网站的吗百度推广联系方式
  • 行业网站导航源码专业代写软文
  • wordpress不加载样式表天津seo渠道代理