----------转换
寂寂寂寂寂蝶丶
这个作者很懒,什么都没留下…
展开
-
用户自定义转换(隐式implicit、显式explicit)
除了标准转换,我们还可以为类和结构定义隐式(implicit)和显式(explicit)转换。用户自定义转换的约束implicit(隐式转换) class Person { public string Name; public int Age; public Person(string name,int age)...原创 2019-11-05 11:09:29 · 313 阅读 · 0 评论 -
is as运算符
is在C#中有些转换时不成功的,并且在运行时抛出一个InvalidCastException异常,我们可以使用is运算符来检查转换是否会成功完成,从而避免盲目尝试转换,表达式:Expr is TargetType Expr是源表达式,TargetType是目标类型,返回值为bool,可以成功转换则返回true,否则返回false。is运算符只可以用于引用转换以及装箱、拆箱转换,不能用于用户自...原创 2019-11-05 10:35:49 · 189 阅读 · 0 评论 -
装箱与拆箱
包括值类型在内的所有C#类型都派生自object类型,然而值类型是高效轻量的类型,因为默认情况下在堆上不包括它们的对象组件,然而如果需要对象组件,我们可以使用装箱,装箱是一种隐式转换,它接受值类型的值,根据这个值在堆上创建一个完整的引用类型对象并返回对象的引用。装箱是创建副本一个有关装箱的普遍误解是在被装箱的项上发生了一些操作,其实不是,它返回的是值的引用类型副本,在装箱产生之后,该值...原创 2019-11-04 19:37:30 · 121 阅读 · 0 评论 -
溢出检测checked、unchecked
显示转换可能会丢失数据并且不能在目标类型中同等地表示源值,对于整数类型,C#给我们提供了选择运行时是否应该在进行类型转换时检测结果溢出的能力,这将通过checked运算符和checked语句来实现,如果我们指定一个表达式或一段代码为checked,CLR会在转换产生溢出时抛出一个OverflowException异常,如果代码不是checked,转换会继续而不管是否产生溢出。checked、u...原创 2019-11-04 19:09:05 · 271 阅读 · 0 评论