zoukankan      html  css  js  c++  java
  • C#的编程基础(数据类型)

    一、数据类型

    1.基本类型

    1.1 值类型

    常用的值类型有分别是整形(比如int)、浮点类型(比如float、double) 、布尔类型(bool)、字符类型(char,char类型的字变量是用单引号括起来的。如'A',如果把字符把在"A"(双引号)内,编译器会把它看作是字符串,从而产生错误)。

    1.2 枚举类

    枚举类的关键字是“enum”,除了chart之外的所有整数类型都可以作为枚举类型的基本类型。

    1.3 结构类

    结构类是使用struct关键字声明的类型

    2.引用类型

    引用类型包括类(class)、接口(interface)、数组、委托(delegate)、object和string。其中object和string是两个比较特殊的类型。object是C#中所有类型(包括所有的值类型和引用类型)根类。string类型是一个从object类直接继承的密封类型(不能再被继承),其实例表示Unicode字符串。

    3.基本类型和引用类型的关系

    以把值类型与引用类型的值赋给object类型变量,C#用“装箱”和“拆箱”来实现值类型与引用类型之间的转换。
    装箱就是将值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个object对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这个对象实例,最后由object对象引用这个对象实例。
    例如:
    using System;
    class Demo
    {  
     public static void Main ( )
        { 

           int x = 123;
           object obj1=x;        // 装箱操作
            x = x+100;           // 改变x的值,obj1的值并不会随之改变
           Console.WriteLine (" x= {0}" , x );       // x=223
           Console.WriteLine (" obj1= {0}" , obj1 );     // obj1=123
        }
    }

     二、类型的相互转换

    1.自动类型转换

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

     int i = 10;

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

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

    class Person { }

    class Student : Person { }

    Student stu = new Student();

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

    2.强制类型转换

    double d = 10;

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

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

    class Person { }

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

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

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

     //对于引用类型的强制转换还可以是

    as关键字来实现,如:

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

    3. 不同类型与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();

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

    Student stu = (Student)person;

    Student stu = person as Student;

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

    1. as 只能用在引用数据类型的转换,而(xx)可用在引用类型和值类型

    2. as 在类型转换时如果转换不了将返回null值,而(xx)转换不了将直接报出异常(Exception)

  • 相关阅读:
    02-vue过滤器和键盘修饰符
    01-vue指令
    webpack
    笔记:随机生成数、字符串
    笔记:long、longlong、int、float、NSString相互转换
    关于NSStringFromClass的一点见解
    iOS中UITextField常用设置和方法
    iOS 倒计时的一种实现
    iOS UITextField的代理<UITextFieldDelegate>的几点笔记
    iOS 单例模式简单实例
  • 原文地址:https://www.cnblogs.com/UnrealEra/p/7009968.html
Copyright © 2011-2022 走看看