iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
1

在這邊我們必須強調一件事情不用去記一堆資料類型但要記住常用的


資料型態 主要分為實值類型與參考類型 在這邊我們基本上只會講到實值類型

首先來了解c#內建資料型態

粗體代表很重要(c#預設的資料型態)

正常來說記英文就可以了

  • 整數類型
類型名稱 中文名稱 類型吃的空間 類型的範圍
short 短整數 2Byte 2的16次方(-32,768 到 32,767)
ushort 無負數短整數 2Byte 2的16次方(0 到 65,535)
int 整數 4Byte 2的32次方(-2,147,483,648 到,147,483,647)
uint 無負數整數 4Byte 2的32次方(0 到 4,294,967,295)
long 長整數 8Byte 2的64次方(-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807)
ulong 無負數長整數 8Byte 2的64次方(0 到 18,446,744,073,709,551,615)

共有如此之多整數而我至今基本上只會用兩種long與int
數字有分兩種 整數與浮點數(有沒有小數點)


  • 浮點數類型
類型名稱 中文名稱 類型吃的空間 類型的範圍
float 浮點數 4Byte 1.5×10-45 到 3.4×1037
double 雙精準度浮點數 8Byte 5.0×10-324 到 1.7×10308
decimal 十進制 16Byte 1.0×10-28 至 7.9×1028

基本上我只會用double不會用float等一下宣告時候會說明現在只是在於認識階段,至於decimal官方說法是因為能使用的數字更大非常適合財務金融?_?,所以呢不像我會去用的東西啊!


數字與字的類型最大差別在於數字對電腦的理解有所謂的近位等等,至於字就相對等於一個符號進行+的時候就是前+後=前後(範例 "1"+"5"="15")

  • 字類型
類型名稱 中文名稱 類型吃的空間 類型的範圍
char 字元 2Byte 0 到 65535
string 字串 根據字的數量而定 1 到 231 個字元

在這邊可能大家聽得很茫茫且怎某沒有預設類型,基本上早期大家都是用char(c語言的時代)之後變成string,string 我們在這邊定義了量 "你好啊" 共三個字這代表這個string佔了3個字元共6個Byte,有此可知string是一個由一堆的字元所組成的,後面會教陣列,其實string的本身就是字元的陣列!!

  • 還需要知道的類型
類型名稱 中文名稱 類型吃的空間 類型的範圍
bool 布林值 1bit(不是Byteㄛ 8bit=1Byte) true與false(真與偽)只有這兩個值
byte 位元組 1Byte 0 到 255
sbyte 帶正負號的位元組 1Byte -128 到127

bool是能與int與string相並論的東西 三大常見東西, bool常常用在二元論上面 是與不是 登入與沒登入 成功與失敗等等,至於byte,我只能說這個要等到學檔案轉化才會使用,像我目前高職的專題就寫到伺服端與客戶端,我們需要把物件(透過class封裝多個上面這些實值類別與參考類別new出來的物件,各位請記住物件也是實值類別只是這會牽涉到物件導向等等我們佔不深究)傳送到另外一個電腦上,這些過程都稱為序列化把物件轉成位元(數字),當我們要使用時候再轉成物件(反序列化)


認識字段

namespace ConsoleApp1
{
    class Program
    {
        static void Main()
        {
            int 我是整數;//這稱為宣告變數
            我是整數 = 10;//這稱為指定(=) 在c#的世界=都叫做指定==才是等於,且指定這個符號是從右到左,正常數學運算都是從左到右 各位可以先這樣理解我們先知道10在讓((我是整數))這個變數的值指定為10
            Console.WriteLine(我是整數); //在這邊我們印出了這個變數 稱為使用變數
            Console.ReadKey(); //這邊不用理會只是讓程序不要關閉
        }
    }
}

在上面的過程中我們在
命名空間 ConsoleApp1
體的裡面
類 Program
體的裡面
方法 static void Main()
體的裡面
創建了四個字段(字段沒有身體因為他只是一行所以沒有所謂的{})
結構基本上就是這樣
在這邊我們可以發現一件事情變數的流程是
宣告 - 指定 - 使用
上面的字段可以縮成三個字段變成

int 我是整數=10; //宣告時指定
Console.WriteLine(我是整數); 
Console.ReadKey(); 

這個流程變成
宣告同時指定 - 使用


在來我們繼續深度理解

int 我是整數=10; //宣告時指定
我是整數=50; //二次指定
Console.WriteLine(我是整數); 
Console.ReadKey(); 

在這邊印出的答案為50因為我們程式碼是進入static void Main()這個方法由上往下讀的這很重要!!
我們在宣告時指定為10
我們把宣告的數字從指定為10變成為指定成50
此時印出的為50

假設我們改寫成

int 我是整數=10; //宣告時指定
Console.WriteLine(我是整數); 
我是整數=50; //二次指定
Console.WriteLine(我是整數); 
Console.ReadKey(); 

此時會先印出10再印出50,印為第一次印的時候還沒有進行二次指定

假設我們不使用預設值int宣告呢(只有字沒有這個問題,數字才有這些問題)

long 我是整數=10L; //指定時記得尾端要加上L 不然系統會當成int類型的值使用long類型儲存
//且我們在這邊聲明一件事情正常人不會進行二次指定
Console.WriteLine(我是整數); 
Console.ReadKey(); 

浮點數與上面同原理不進行額外說明指定時尾端加上大寫F等等


接者是字類型這會很厭世ㄛ,我記得我以前寫JAVASCRIPT我都使用""但自從我學了C相關的語法就開始粒粒分明了

string ""

string 我是字串="母湯叔叔"; //使用string指定時記得字要進行""包裝
Console.WriteLine(我是字串); 
Console.ReadKey(); 

char ''

char 我是字元='氣'; //使用char指定時記得字要進行''包裝且只能有一個字
Console.WriteLine(我是字元); 
Console.ReadKey(); 

我在這邊強烈建議大家要習慣使用string因為下面這個情況會很好用

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string 用戶輸入的字 = "機器人 你好早安!";
            char[] 要判斷的字 = 用戶輸入的字.ToCharArray(); //此為一維數組(線性表) 陣列的一種(雖然大家都叫他陣列)
            for(int i=0; i < 要判斷的字.Length; i++) //for是迴圈的一種屬於陳述式(語句所以會有所謂的開始的{語結束的})
            {
                Console.WriteLine(要判斷的字[i]); //i會遞增從0開始到慢慢印到最後一個字
            }
            Console.ReadKey();
        }
    }
}

透過這種方式探索字再加上判斷式我們發現裡面有"機器人"與"早安"
此時可以讓系統反向回復"你好早安阿!"(最近專題要製作架設伺服器編寫文字聊天室登入功能等等模擬聊天軟體內建機器人)


實值類別還有三個東西第一種叫做enum我們稱為列舉對岸稱為枚舉,enum我們會流到switch教學且這需要一些計算的基礎,而使用enum可以大大提高可讀性 在大型編碼中有多種狀態很好使用
第二種叫做結構體我們會留到物件導向在教學因為結構體屬於物件導向的範圍
第三種稱為可空類型 明天會教這會和計算並在一起


明天再教計算今天先這樣 bool會在迴圈和判斷式當中長期使用
以後可能內容也不會那某多(第一篇真的很多) 因為課業+專題的關係


上一篇
為什麼是C#
下一篇
資料不但能計算還能轉換阿@@
系列文
高二生_學c#一個月之痛苦,悲哀,感動回憶錄(從基礎控制判斷 goto 物件導向(內含大量圖解))7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言