zoukankan      html  css  js  c++  java
  • C#基础——类型转换

     

           引子:类型转换在程序中是最常见的情形之一,在C#中有几种形式的类型转换,对于初学者来说,很多时候不知道如何选择哪种形式的类型转换,或者对每一种的形式的类型转换理解不透,不能够灵活运用。

          

           本文总结了C#中每种类型转换的特点和应用场合

           概述:常见的类型转换可分为自动类型转换和强制类型转换、不同类型之间的相互转换三类。当将小类型变量赋值为大类型变量时将发生自动类型转换;当将大类型变量赋值给小类型变量时必须使用强制类型转换;如果是不同类型之间的相互转换则需要用到一些方法来辅助完成。下面将详细介绍三种形式。

    1. 自动类型转换

    //基本数据类型之间的自动类型转换

    int i = 10;

    double d = i; //发生自动转换

     

    //引用数据类型之间的自动类型转换

        classPerson { }

        classStudent : Person { }

        Student stu = newStudent();

    Person person = stu; //发生自动转换

    1. 强制类型转换

      

    double d = 10;

    int i = (int) d; //发生强制转换,此处会丢失数据精度

     

    //引用数据类型之间的自动类型转换

        classPerson { }

        classStudent : Person { }  //Student 继承了Person类

        Person person = newStudent(); //父类引用指向子类对象

    Student stu = (Student)person; //发生强制转换

    //对于引用类型的强制转换还可以是as关键字来实现,如:

    Student stu = person asStudent; //发生强制转换

    1. 不同类型与string之间的相互转换

        1.字符串转换成基本数据类型

         int i = int.Parse("10");

         double d = double.Parse("10.5");

         bool b = bool.Parse("true");

         //注:很多初学者一直认为基本数据类型就像和Java一样,

         //其实C#的所有基本数据类型都是结构(struct)类型,在

         //C#中结构是允许有方法的,所有基本数据类型都有Parse方法

         //xx.Parse()只是这种类型转换的一种方式,

         //Convert类提供了很多更丰富的类型转换的方法,如:

         int i = Convert.ToInt32("10");

         bool b = Convert.ToBoolean("true");

         DateTime time = Convert.ToDateTime("2000-2-2");

        

         2.将原始值转换成string

         //统一用ToString()方法即可

         int i = 10;

         double d = 10.5;

         bool b = false;

         string si = i.ToString();

         string sd = d.ToString();

         string sb = b.ToString();

     

    1. as 类型转换与(xx)类型转换的区别

    Student stu = (Student)person;

    Student stu = person asStudent;

    以上两种方式都可实现类型的强制转换,但两者还是有很大的区别,主要有两点:

    1. as 只能用在引用数据类型的转换,而(xx)可用在引用类型和值类型
    2. as 在类型转换时如果转换不了将返回null值,而(xx)转换不了将直接报出异常(Exception)
  • 相关阅读:
    sp2010 升级sp2013 用户无法打开网站
    powerviot install in sharepoint 2013
    can not connect cube in performancce dashboard
    westrac server security configure user info
    添加报表服务在多服务器场
    sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
    delete job definition
    目前付款申请单内网打开慢的问题
    item style edit in sharepoint 2013
    Could not load file or assembly '$SharePoint.Project.AssemblyFullName$'
  • 原文地址:https://www.cnblogs.com/Wolfmanlq/p/2663601.html
Copyright © 2011-2022 走看看