美文网首页
类型转换问题

类型转换问题

作者: 蓝色Hippie | 来源:发表于2018-01-20 17:50 被阅读17次

一.重载转换运算符
//例如:int 值可以隐式转化为double值,但反过来就必须显示转换。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication2
{
public class Program
{
static void Main(string[] args)
{
//隐式
ConClass1 op1 = new ConClass1();
op1.val = 3;
ConClass2 op2 = op1;

        //显示
        ConClass2 op22 = new ConClass2();
        op22.val = 3e15;//double数字太大时转化会溢出报错
        ConClass1 op11 = (ConClass1)op22;
    }
    public class ConClass1
    {
        public int val;
       //隐式重载运算符
        public static implicit operator ConClass2(ConClass1 op1)
        {
            ConClass2 returnVal = new ConClass2();
            returnVal.val = op1.val;
            return returnVal;
        }
    }
    public class ConClass2
    {
        public double val;
        //显示重载预算符
        public static explicit operator ConClass1(ConClass2 op2)
        {
            ConClass1 returnVal = new ConClass1();
            checked
            {
                returnVal.val = (int)op2.val;
            }
            return returnVal;
        }
    }
}

}
二.as 和 is
1.任何类型都可以转换为其基类类型,用隐式转换完成;
2.任何类型转换为其派生类型时,必须进行显示转换。
3.使用GetType可以取得任何对象的精确类型;
4.基本类型可以使用Convert类实现类型转换;
5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;
6.值类型和引用类型的转换称为装箱(boxing)或拆箱(unboxing);

is转换规则:

  1. 检查对象类型的兼容性,并返回结果true(false);
    2.不会抛出异常;
    3.如果对象为null,刚返回false;

as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null; 2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出异常;
4.as是引用类型的类型转换或者装箱转换,不能用与值类型的转换。

相关文章

  • 类型转换问题

    一.重载转换运算符//例如:int 值可以隐式转化为double值,但反过来就必须显示转换。using Syste...

  • 十一、类型转换

    1、强制类型转换 C方式的强制类型转换 C方式强制类型转换存在的问题 过于粗暴:任意类型之间都可以进行转换,编译器...

  • 第十八章:运算符重载

    员 定义多个版本,如果类型比较多则函数数量就会增加,因此可以利用类型转换。 类类型转换的问题:

  • C语言类型转换

    类型转换的方式 自动类型转换1.运算转换(规则:会把小类型转换为大类型) 2.赋值转换 强制类型转换格式:(类型)...

  • 引用类型转换

    向上类型转换(自动类型转换),是小类型到大类型的转换向下类型转换(强制类型装换),是大类型到小类型的转换在强制类型...

  • NSDecimalNumber用法-处理金额显示问题

    NSDecimalNumber用来处理iOS中金额显示问题,可以转换string类型,也可以将int类型转换成Nu...

  • 第三章 JavaScript中的数据间类型的转换

    数据的类型转换分为强制类型转换和非强制类型转换,强制类型转换也可以称为显示转换,非强制类型转换也可以称为隐式转换。...

  • 笔记2018-08-28

    类型转换 自动类型转换运算转换(编译器会自动把小类型转换为大类型) 赋值转换(将等号右边的类型转换为等号左边的类型...

  • systemverilog浅析$cast

    问题一:动态类型转换和静态类型转换的区别? $cast:基本语法$case(A,B)实际上是A=B;A表示目的端,...

  • 四、SQL函数④(其他函数)

    类型转换 隐式转换:数据库系统自动将字符串类型转换为整数类型显式转换:使用类型转换函数转换。使用类型转换函数不仅可...

网友评论

      本文标题:类型转换问题

      本文链接:https://www.haomeiwen.com/subject/pimtaxtx.html