.net 中的一些转换机制
2021-03-20 07:26
标签:方法 off 一个 creat 文件的 system class tar ati .Net Framework将以下类型成为基本类型: bool、char、string、System.DateTime、System.DateTimeoffset和所有C#数字类型。 静态类Convert定义将每一个基本类型转换为其它基本类型的方法。可是这些方法大部分没有什么实际用处;要么抛出异常,要么是隐式转换的冗余方法。 ps:所有的基本类型都(显示)实现IConvertible,它定义了转换到其他基本类型的方法。在大多数情况下都直接调用Convert类的方法。编写一个接受IConvertible类型的参数的方法在特定的情况用处是很大的。 数字类型的显示和隐式转换概括为。 转换操作是进行了效率优化的,因此它将截断不符合要求的数据。这可能导致从一个实数转换为一个整数的操作出现问题。因为在这种情况下通常希望将结果进行舍入而非截断。 Convert采用银行舍入的方式,将中间值转换为偶整数(这样可以避免正负差)。如果舍入方式不适用,那么可以对实数调用Math.Round方法,该方法使用额外的参数控制中间的舍入方式。 To(整数类型)的方法包括一些重要的重载方法,它们可以将字符串转换为其他进制: 第二参数指定了进制数,它可以是任何一种进制,但必须是三种中的一个。 Convert提供了ChargeType方法。 ChargeType还能接受IFormatProvider(格式提供器) ps:ChargeType无法指定格式化字符串,也无法指定解析标记。 Base 64使用ASCII字符集中的64个字符将二进制数据编码为可读的字符串。 Convert类的ToBase64String方法将一个字节数组转化为Base 64格式,而FromBase64String方法则与之相反。 在处理XML文件的数据读写,System.Xml命名空间下的XmlConvert类型提供了格式化和解析的最佳方法。XmlConvert的方法不需要提供特殊的格式字符串就能够给处理xml格式的细微差别。例如:XML中的true是“true”而不是“True”。 类型转换器在设计时环境中执行格式化和解析操作。它们也能够解析XAML(可扩展应用程序标记语言,Extensible Application Markup Language)文档中的值。XAML主要用于Windows Pesentaion Foundation和Workflow Foundation。 在.Net Framework中有超过100中类型转换器,用于颜色、图像和url等数据。相反格式提供器则为一些简单 的值类型提供了实现。 类型转换器通常会采用多种方式解析字符串,而这个过程并不需要提示。例如:在vs的ASP.NET应用程序中,如果我i们在属性窗口中将控件的BackColor属性赋值为Begie,则Color类型转换器就会判断引用的是一个颜色名称而非RGB字符或系统颜色值。类型转换器的灵活性使它在设计器和XAML文档之外的环境中爷很有用。 所有的类型转换器都是System.ComponentModel命名空间中的TypeConverter类型的子类。如果要获得一个TypeConverter,则需要调用TypeDescriptor.GetConverter方法。 通常来说,类型转换器的名称应以Converter结尾,并且通常与它们转换的类型位于同一命名空间中。类型通过TypeConverterAttribute与转换器联系在一起的。这样设计器就能自动获取到对应的转换器了。 类型转换器还可以提供一些设计时的服务,例如为设计器生成标准的下拉列表项,或者辅助代码序列器。 大多数基本类型都能通过BitConverter.GetBytes方法转换为字节数组。 当然BitConverter也提供字节数组转换为其他类型的方法。 BitConverter不支持decimal类型和Datime(Offset)类型,但可以通过decimal.GetBits将一个decimal类型转化为一个int数组。另外,decimal也提供了一个接受int数字的构造器。 而对于Dateime,则可以调用一个实例的ToBinary方法,它会返回一个long,然后可以通过BitConverter进行转换了。静态的DateTime.FromBitnary方法则可以执行相反的操作。 .net 中的一些转换机制 标签:方法 off 一个 creat 文件的 system class tar ati 原文地址:https://www.cnblogs.com/aqgy12138/p/12728014.html
一.Convert
1.实数到实数的舍入转换
double d=3.9;int i=Convert.ToInt32(d);//i==4
2.解析二、八、十六进制数字
int thirty = Convert.ToInt32("1E", 16);//30 Parse in hexadecimal
uint five = Convert.ToUInt32("101", 2);//5 Parse in binary
3.动态转换
Type targetType = typeof(int);
object source = "42";
object result = Convert.ChangeType(source, targetType);
Convert.ChangeType(source, targetType);
Console.WriteLine(result);//42
Console.WriteLine(result.GetType());//System.Int32
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
Type targetType = typeof(double);
string source = "1,034,562.91";
var result = Convert.ChangeType(source, targetType,culture);
Console.WriteLine(result);//1034562.91
Console.WriteLine(result.GetType());//System.Double
4.Base64转换
二.XmlConvert
三.类型转换器
TypeConverter converter = TypeDescriptor.GetConverter(typeof(Color));
Color beige = (Color)converter.ConvertFromString("Beige");//Color[Beige]
Color purple = (Color)converter.ConvertFromString("#800080");//Color[Purple]
Color window = (Color)converter.ConvertFromString("Window");//Color[Window]
四.BitConverter
decimal a = 10;
var b = decimal.GetBits(a);
decimal c = new Decimal(b);
Console.WriteLine(a == c);//true
上一篇:js如何实现上拉加载更多...
下一篇:js获取字符串最后几位字符数