中山网站建设制作,涉县住房与城乡建设厅网站,广州社交软件app开发,wordpress中加表格【C#】通用类型转换 自动类型转换#xff08;隐式类型转换#xff09;强制类型转换#xff08;显式类型转换#xff09;通过函数进行转换#xff08;通过方法进行类型转换#xff09;使用 as 操作符转换通用类型转换方法实现 数据类型转换就是将数据#xff08;变量、数… 【C#】通用类型转换 自动类型转换隐式类型转换强制类型转换显式类型转换通过函数进行转换通过方法进行类型转换使用 as 操作符转换通用类型转换方法实现 数据类型转换就是将数据变量、数值、表达式的结果等从一种类型转换为另一种类型。 自动类型转换隐式类型转换 自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换这种转换不需要程序员干预会自动发生。 例如
int i 100;
double d i; 敲黑板
转换前后的类型必须相兼容 例如int和double隐式数值转换实际上就是从低精度的数值类型到高精度的数值类型的转换即小的类型转大的类型
强制类型转换显式类型转换 与自动转换正好相反强制转换需要用户明确地指定转换的类型。显式转换包括所有的隐式转换也就是说把任何系统允许的隐式转换写成显式转换的形式都是允许的 例如 double d 100.00;
int i (int)d;敲黑板
显式转换可能会导致错误。进行这种转换时编译器将对转换进行溢出检测。如果有溢出说明转换失败就表明源类型不是一个合法的目标类型。无法进行类型转换。强制类型转换会造成数据精度丢失。
通过函数进行转换通过方法进行类型转换 函数转换顾名思义通过编写类型处理方法的形式达到转换类型的目的。 int i;
string str 100;
i int.Parse(str);
int.TryParse(str, out i); // 推荐使用对比 int.Parse(str) 多了异常处理增强了代码的健壮性常用类型转换方法
方法说明ToStringC# 基类型是 Object 所以所有的类型都有 ToString()。转字符串类型Convert.ToChar转换为字符型(char)Convert.ToString转换为字符串型(string)Convert.ToDateTime转换为日期型(datetime)Convert.ToDouble转换为双精度浮点型(double)Conert.ToSingle转换为单精度浮点型(float)Convert.ToBase64CharArray将数组中的项进行 Base64 编码Convert.ToBase64String将字符串进行 Base64 编码Convert.ToBoolean转换为布尔类型(bool)Convert.ToDecimal转换为等效的十进制数Convert.ToSByte转换为 8 位带符号整数Convert.ToInt32转换为 32 位带符号整数Convert.ToInt16转换为 16 位带符号整数Convert.ToInt64转换为 64 位带符号整数Convert.ToByte转换为 8 位无符号整数Convert.ToUInt16转换为 16 位无符号整数Convert.ToUInt32转换为 32 位无符号整数Convert.ToUInt64转换为 64 位无符号整数
使用 as 操作符转换 使用 as 操作符具有 高效 和 安全 的特点 as 操作符不会做过的转换操作当需要转化对象的类型属于转换目标类型或者转换目标类型的派生类型时那么此转换操作才能成功而且并不产生新的对象当不成功的时候会返回 null 。 当用 as 操作符进行类型转换的时候首先判断当前对象的类型当类型满足要求后才进行转换而传统的类型转换方式是用当前对象直接去转换而且为了保护转换成功要手动加上try-catch所以相对来说as 效率高。 敲黑板
as 转换不成功会返回 null 因此在无法确定转换结果的情况下一定一定要进行判空。as 也有一定的限制 不用在类型之间进行类型转化不能应用在值类型数据 - 只支持引用类型
通用类型转换方法实现 通用类型转换方法本质还是方法进行类型转换的方式确切来说是 Convert 的形式。 不同于现有的转换方法有固定的类型通用型是通过 泛型 约束来定义目标转换类型。并且使用扩展方法的形式是的调用起来非常的容易且可以进行链式编程。 public static class Extensions
{public static T ParseT(this object value, T defaultValue default){var type typeof(T);try{var nullableType Nullable.GetUnderlyingType(type);if (nullableType is null)return (T)Convert.ChangeType(value, type);return (T)Convert.ChangeType(value, nullableType);}catch{return defaultValue;}}
}备注
还可以通过继承接口 IConventible 或者 TypeConventer 类从而实现自己的转换。