zoukankan      html  css  js  c++  java
  • C#學習基礎數據類型

     

    C#的數據類型分為兩大類:值類型和引用類型.

    ,值類型

    值類型又分為以下三大類:簡單類型(Simple types)和結構類型(Struct types)和枚舉類型(Enumeration types)

    1.簡單類型也稱為純量類型,是直接由一系列遠素構成的數據類型.從計計算機的表示角度來看這些簡單類型可以分為整數類型,布爾類型,字符類型,和實數類型.

    1.1整數類型的變量的值為整數,共有以下九种:

    數據類型    特征            取值大小

    sbyte       有符號8位整數   -128127

    byte        無符號8位整數   0255

    short       有符號16位整數 -3276832767

    ushort      無符號16位整數 065535

    int         有符號32位整數 -21474836482147483647

    uint        無符號32位整數 04294967295

    long        有符號64位整數 -92233720368547758089223372036854775807

    ulong       無符號64位整數 018446744073709551615

    位數是按2的指數冪來定議的,sbyte占一個字節即28次方.

    1.2布爾類型

    即真和假,分別用truefalse來表示.C#中不像其它語言可以轉換成真假,這里是不合法的.

    1.3實數類型

    實數類型分為單精度(float)和雙精度(double)和十進制類型(decimal)三种類型.

    單精度表示的大小為1.5*10的負45次方到3.4*1038次方,精度為7位數

    雙精度表示的大小為5.0*10的負324次方到1.7*10308次方,精度為1516.

    十進制類型是一种高精度的128位數據類型,表的的大小為1.0*10的負28次方到7.9*1028次方的2829位有效數字.定議的時候要用m下標以表明它是一個十進制類型.:

    decimal d_value=1.0m;如果沒有m會當是雙精度處理.

    1.4字符類型

    采用的是unicode字符集一個unicode的標準長度為16.

    以下以些轉議字符

    "'    單引號

    ""    雙引號

    ""    反斜槓

    "O    空字符

    "a    感嘆號(Alert)

    "b    退格

    "f    換頁

    "n    新行

    "r    回車

    "t    水平tab

    "v    垂直tab

    2.結構類型

    把一個單一實體的類型就叫做結構類型,每一個變量稱為結構的成員.結構類型的變量采用struct來進行聲明.如下面我們定議的通訊錄記錄結構

    struct PhoneBook

    {

     public string name;

     public string phone;

     public string address;

    }

    PhoneBook p1;

    ph.name="athrun"; 對成員的訪員

    下面是把一個結構類型作為另一個結構類型的成員類型.如下:

    struct PhoneBook

    {

     public string name;

     public string phone;

     public uint age;

     public struct address

     {

        public string city;

        public string street;

        public uint no;

     }

    }

    通訊錄這個結構中又包括了"地址"這個結構,結構"地址"類型包括城市,街道,門牌號碼三個成員.

    3.枚舉類型

    枚舉(enum)實際上是為一組在邏輯上密不可分的整數值提供便於記憶的符號,比如我們聲明一個代表星期的枚舉類型的變量;

    enum WeekDay

    {

     Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday

    };

    WeekDay day;

    為枚舉類型的元素所給的值類型限於long,int,short,byte等整數類型.

    ,引用類型

    "引用"這個詞在這里的含議是,該類型的變量不直接存儲所包含的值,而是指向它所要存儲的值.也就是說,引用類型存儲實際數據的引用值的地址,引用類型有四种:

    ,代表,數組,接口.

    1,類是一种包含數據成員,函數成員和嵌套類型的數據結構.類的數據成員有常量,域和事件.函數成員包括方法,屬性,索引指示器,運算符,構造函數和析構函數.類和結構同樣都包含了自己的成員,但它們之間最主要的區別在於:類是引用類型,而結構是值類型.

    類支持繼承機制,通過繼承,子類可以擴展父類的數據成員和函數方法,進而達到代碼重用和設計重用的目的.下面是一個類:

    class PhoneBook

    {

     private string _name;

     private string _phone;

     private struct _address

     {

        public string city;

        public string street;

        public uint no;

     }

     

     public string Phone

     {

        get {return _phone;}

        set {_phone=value;}

     }

     public PhoneBook(string n)

     {

        name=n;

     }

     public Edit(){;}

    }

    上面這個類中包括有數據成員有域name,phone,address屬性Phone;類的函數成員有構造函數PhoneBook(string n),方法Edit.

    2.代表(delegate).它實際上相當於c#中的函數指針原型.與指針不同的是,代表在c#是類型安全的.在聲明代表時,只需要指定代表指向的原型的類型,它不能有返回值,也不能帶有輸出類型的參數.

    using System;

    delegate int MyDelegate(); //聲明一個代表

    public class MyClass

    {

     public int InstanceMethod()

     {

        Console.WriteLine("Call the instance method");

        return 0;

     }

     static public int StaticMethod()

     {

        Console.WriteLine("Call the static method");

        return 0;

     }

    }

    public class Test

    {

     static public void Main()

     {

        MyClass p=new MyClass();

        //將代表指向非靜態的方法InstanceMethod

        MyDelegate d=new MyDelegate(p.InstanceMethod);

        //調用非靜態方法

        d();

        //將代表指向靜態的方法StaticMethod

        d=new MyDelegate(MyClass.StaticMethod);

        //調用靜態方法

       d();

     }

    }

    程序的輸出結果是:

    call the instance method

    call the static method

    3.數組

    數組是一組類型相同的有序數據.

    class Test

    {

     static void Main()

     {

        string [] a1;        //一維string數組

        string [,] a2;       //二維

        string [,,] a3;      //三維

        string [][] j2;      //可變數組(數組)

        string [][][][] j3; //多維可變數組

     }

    }

    ,裝箱(boxing)和拆箱(unboxing)

    裝箱和拆箱機制使得在c#類型系統中,任何值類型,引用類型和object(對像)類型之間進行轉換,我們稱這种轉為綁定連接.簡單的說,有了裝箱和拆箱後,對任何類型的值來說最終我們都可以看作是object類型.

    1,裝箱轉換是將一個值類型隱式地轉換成一個object類型,或者把這個值類型轉換成一個被該值類型應用的接口類型(interface-type).把一個值類型的值裝箱,也就是創建一個object實例並將這個值復制給這個object.

     

    我們也可以用顯式的方法來進行裝箱操作:

    Int i=10;

    Object obj=object(i);

    我們看一下下面的程序

    Using system;

    Class test

    {

     Public static void Main()

     {

        Int i=10;

        Object obj=I; //進行裝箱操作,對像類型

       If (obj is int)

       {

          Console.Write(“The value of I is boxing!”);

       }

        I=20; //改變i的值

        Console.WriteLine(“int :i={0}”,i);

        Console.WriteLine(“object: obj={0}”,obj);

     }

    }

    輸出結果為:

    The value of I is boxing!

    Int :i=20;

    Object obj=10;

    這說明了被裝箱的類型的值是作為一個拷貝賦給對像的.

    2,拆箱轉換,和裝箱轉換正好相反,拆箱轉換是指將一個對像類型顯式地轉換成一個值類型,或是將一個接口類型顯式地轉換成一個執行該接口的值類型.

    拆箱的過程分為兩步:首先,檢查這個對像實例,看它是否為給定的值類型的裝箱值.然後,把這個實例的值拷貝給值類型的變量.
    下面是一個對像拆箱的過程:
    int i=10;
    Object obj=I;
    int j=(int)obj;
    這個過程用圖來表示如下:

    可以看出拆箱剛好是裝箱過程的逆過程.必須注意,裝箱轉換和拆箱轉換必須是類型兼容

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    Vue框架的两种使用方式
    转淘宝前端的一篇文章作备份
    分享两个细致、全面讲解Vue和React源码的链接
    网络慢。。。
    mysql的查询使用explain的讲解
    pv,uv的意义
    vi
    php中经常使用的string函数
    dirname(__FILE__) === __DIR__
    phpstorm开发环境搭建流程
  • 原文地址:https://www.cnblogs.com/Athrun/p/940160.html
Copyright © 2011-2022 走看看