Win10 開發入門:C# 程式語言基礎之數據類型與變量

2020-12-17 IT之家

根據網友們的反饋,在接下來的兩周內,IT之家將對C#語言的基礎知識進行介紹(每天一個知識點),以便你能夠基本讀懂項目中的C#代碼。但需要說明的是,文章能夠容納的內容是極其有限的,只能提供一個學習的思路,無法涉及到C#語言的方方面面,特別是很多高級主題,你需要藉助其他參考書籍來學習和掌握。

電腦程式往往需要處理各種各樣的數據,因此每一套程式語言都需要有一套完善的機制來表示這些數據,這些數據可能是一串字符(字符串)、數字等,而數字又包括整數型、浮點型等。在有些程式語言中,定義數據時並不嚴格區分數據的類型,在程序運行過程中,數據類型可根據實際情況發生變化,這種語言稱為弱類型語言,比如PHP、JavaScript這類腳本語言。而C#則是一種強類型語言,它對不同的數據類型都有不同的定義方法。數據類型又分為基本數據類型和自定義數據類型,後者是在前者基礎上由用戶自定義的一種數據類型,比如我們之前討論過的類。

基本數據類型

• 整數類型

在C#中共有8種整數類型,分別為sbyte(有符號8位)、byte(無符號8位)、short(有符號16位)、ushort(無符號16位)、int(有符號32位)、uint(無符號32位)、long(有符號64位)、ulong(無符號64位)。

這裡的位數是指二進位位數,對於有符號整形,最高位為表示正負的符號位,用n表示數據二進位位數,那麼其表示範圍為-2^(n-1)~ 2^(n-1)-1,比如32位有符號整型int的表示範圍為-2147483648~2147483647。對於無符號整型,表示範圍則為0~2^n-1,比如32位無符號整型uint表示範圍為0~4294967295。

至於為何表示範圍的最大值和最小值絕對值大小不一,這裡涉及到原碼、反碼、補碼相關的知識,請大家自行查閱資料進行學習。

• 浮點類型

浮點數用於表示非整數數字,它在計算機中的表示是比較複雜的,這裡我們只需要簡單知道C#中支持兩種浮點數即可,分別為float和double,前者為32位,後者為64位。

除此之外,還有一種特殊的浮點類型,即decimal類型,它用128位進行表示,較適合大而精確的金融類計算。

• 布爾類型

布爾類型數據bool用於表示真假兩種狀態,分別為true和false,常常用在條件判斷中。

• 字符和字符串

字符類型(char)用來表示Unicode字符,而零個或多個字符組成的有限序列則稱為字符串(string)。

變量的定義和賦值

有了數據類型我們就可以在程序中定義所需的數據,定義數據的過程稱之為變量的聲明,變量被聲明之後便可對其進行賦值。比如聲明一個字符串類型變量,代碼如下:

string name;

其中string為數據類型,包括上文介紹過的其他表示數據類型的單詞,它們在C#語言中為專用單詞,稱之為關鍵字。後面的name則是我們自定義的用於表示一個字符串變量的名稱。

聲明變量之後就可以對其進行賦值,賦值操作代碼如下所示:

name = "DouDou";

類型的分類

C#中的數據類型可分為值類型引用類型兩類,主要根據它們在內存中的存儲和複製的方式進行區別。在以上介紹的數據類型中,只有string類型為引用類型。

舉個例子,我們定義兩個int變量:

int a = 1;

int b = a;

在內存中a和b分別佔用不同的內存位置,且更改其中一個變量的值對另一個不會造成影響。值類型變量本身存儲數據值。而引用類型則不同,類似地定義兩個字符串變量:

string c = "Doudou";

string d = c;

在內存中,c和d雖然是兩個字符串變量,但它們都指向內存中同一個位置,實際上a和b兩個變量本身存儲的是內存中的位置,而不是數據本身,要訪問數據需要先從變量中讀取內存地址,才後再根據內存地址找到數據內容。

最簡單的C#程序及程序編譯

下面我們就來看一段最簡單的完整的C#程序代碼:

class HelloWorld

{

static void Main()

{

System.Console.WriteLine("Hello World!");

}

}

在之前的文章中我們已經初步接觸了類(class)的概念。C #是一門完全面向對象的程式語言,所有的語句都放在類的內部,以上代碼即定義了一個名為HelloWorld的類。與C++程序一樣,C#也有入口點函數,即程序開始運行的地方,在以上代碼中程序的入口位置就是HelloWorld類中的Main方法,並且這個方法必須為靜態(static)方法。靜態方法的特點是,不需要對類進行實例化就可以直接被調用執行。在這個最簡單的程序中,在Main方法中我們調用System.Console.WriteLine方法在控制臺輸出了一串字符Hello World!,並且這一串字符佔據一整行的位置。

下面我們利用前面已經學到的知識對這個簡單的程序進行修改,在控制臺中輸出字符串變量對應的值,修改後的代碼如下:

class HelloWorld

{

static void Main()

{

string a = "Doudou";

string b = a;

System.Console.WriteLine(a);

System.Console.WriteLine(b);

b = "Hi";

System.Console.WriteLine(a);

System.Console.WriteLine(b);

}

}

下面我們就來編譯並運行這個程序,首先我們在D盤新建一個文本文檔,將以上代碼複製到文本文檔中,保存並重命名為HelloWorld.cs。然後我們使用微軟的Microsoft .NET編譯器對程序進行編譯。如果你已經安裝了Visual Studio,在開始菜單中找到「VS2015開發人員命令提示工具」,打開如下圖,依次執行三條命令:

上圖三條命令解釋:

• 通過cd /d d:\命令可將命令提示符的當前路徑定位到D:\

• 通過csc.exe 原始碼文件名命令可執行程序的編譯

• 編譯後的可執行文件名稱與原始碼文件名稱(除後綴名外)一致,並且保存在原始碼文件同目錄下,因此直接輸入HelloWorld.exe即可執行程序。

最後就可以看到程序執行結果:一共輸出了四行字符串,前兩行分別為a和b初次賦值後所引用字符串的值,最後兩行為對b進行重新賦值後a和b分別所引用字符串的值。

也許你會奇怪,既然a和b都是引用類型數據,保存的是數據在內存中的位置,那麼對b變量進行修改後,為什麼a的值沒有跟隨變動呢?這是因為在C#中字符串是一種特殊的引用類型數據,字符串在內存中是不可變的。當你改變字符串變量的值時,實際上是在內存中重新創建了一個新的字符串,而變量的值則被重新指向了新的字符串內存位置,因此字符串變量在使用時表現出與值類型數據相似的特性。

數組

最後我們再來了解一下數組。數組是程式語言中必須掌握的知識點,它是一種特殊的變量,也是引用類型數據,用來存儲同一種類型的多個數據的集合,比如將多個人的名字存儲在同一個變量中。

數組變量的聲明格式:先指定數組元素數據類型,後面跟一對方括號,然後是變量名。比如聲明一個字符串數組,然後對其進行賦值:

string[] names;

names = new string[]{"aa", "bb", "cc"};

在使用數組中的數據(即訪問數組)時通過方括號索引來實現,比如,我們從以上數組中取出第3個數據(數組的索引從0開始,因此第三個數據索引為2),將其複製給一個新的字符串變量,代碼如下:

string name = names[2];

本文對C#中的數據類型、最簡單的C#程序構成以及程序的編譯進行了介紹,最後又認識了一下數組這種特殊的變量。下次IT之家將對C#中的操作符、控制流程語句以及方法進行介紹。在這之前網友們需要針對以上內容廣泛查閱相關資料進行加強學習。

IT之家Win10開發入門系列文章:

《IT之家學院:跟我一起學Win10 UWP應用開發(開篇)》

《Win10開發入門:UWP通用應用程式項目結構分析》

關注Windows10,鎖定Win10之家(http://win10.ithome.com)

相關焦點

  • python基礎知識變量、運算和數據類型
    知識點2:變量與賦值(什麼是什麼)第一種方法與後兩種方法的區別:前者只是把Python當做簡單的計算器使用;後者有編程思想,通過變量賦值使得計算今日收益率這一過程的程式語言的含義更加明了,更易於閱讀和理解。通過變量賦值,如何將「今日收盤價是22.5」這句話轉換為 Python 語言?
  • 程式語言入門書推薦 [ NEW!]
    了解編程和系統設計的不同方式,找尋卓越代碼的奧秘,體會編程之美簡單Python語言闡述,各程式語言愛好者均可閱讀「同樣的故事,不同的說法」,編程亦可如此。作者在本書中創造了一種全新的可視化敘述方式,以圖文並茂的形式、樸實簡潔的文字,並輔之以大量表格和代碼示例,全面、直觀地闡述了C#語言的各種特性。新版本除了精心修訂舊版內容外,還全面涵蓋了C#5.0的新增特性,比如異步編程、調用者信息、case表達式、帶參數的泛型構造函數、支持null類型運算等。通過本書,讀者能夠快速、深入地理解C#,為自己的編程生涯打下良好的基礎。
  • C語言入門級教程:基礎數據類型與基本算法,學編程從此刻開始!
    今天帶大家了解一下學C語言必備的基本數據類型和基本算法,適合剛學C以及零基礎的小夥伴! 話不多說,我們一起來學習吧~ 數據類型 ● 基本類型 基本類型就是我們在使用C語言時最基礎的數據類型,包括整形(短整型,基本整型,長整型)、字符型、浮點型(單、雙精度)以及枚舉類型。
  • Swift語言開發入門視頻教程:playground基本用法
    Swift語言開發入門視頻教程:playground基本用法 蘋果公司在今年的WWDC大會上發布了全新程式語言Swift,Swift語言的發布對於開發者們,尤其是iOS開發者們來說確實是蘋果開發者大會的一大亮點
  • 蘋果Apple Swift程式語言中文版入門教程
    Swift(雨燕),本文小編為您帶來蘋果Apple Swift程式語言中文版入門教程。蘋果在WWDC第一天早晨的kyenote中,說了三件事:新版OS X發布、iOS 8來了,全新的開發者程式語言Swift(雨燕)!下面小編為您送上蘋果Apple Swift程式語言中文版入門教程,希望對大家能夠有所幫助。
  • 學習編程道路上的入門書籍之C篇
    學習編程專欄連載編程學習編程道路上的入門書籍之C篇,此篇內容將包含一些算法以及數據結構相關內容,文章中的所有推薦的書籍均來自知乎社區大牛力薦書籍、豆瓣評分較高書籍、各語言社區比較熱門書籍以及京東、亞馬遜、噹噹熱銷書籍的重合書籍。
  • Unity遊戲開發之C#快速入門
    C#是微軟團隊在開發.NET框架時開發的,它的構想接近於C、C++,也和JAVA十分相似,有許多強大的編程功能。
  • python入門第二課:變量和數據類型
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes在Python中,變量可以理解為抽屜,數據就是一個蘋果、香蕉、書本等可以放進抽屜的東西,變量是用來存儲數據的。我們對上一節課的hello world代碼稍加改動,改成下面的代碼,看看會輸出什麼?
  • 物聯網開發筆記——嵌入式開發之Linux系統中C語言數據類型
    了解熟悉工業自動化領域的,也開發過物聯網相關的產品。我的初衷是做工業物聯網的,但這個系統太過於龐大。所以就先做小的系統,例如構建一整套智能家居系統,從硬體到軟體全系列。下面就開始這套智能家居系統是如何在物聯網基礎上構建。在這裡你可以0開始,然後到1質變,僅僅需要一起跟我學物聯網系列的開發筆記的文章。
  • C#核心開發-變量定義,變量初始化和變量案例實戰應用
    C#核心開發-第3單元-數據類型-第1節:變量一都編程-C#核心開發課程1. 變量C#中的變量是指在程序運行其間,其值是可以發生變化的。可以將變量理解為存儲指定數據類型值的容器。變量的定義對於變量的定義(也稱為聲明),是由數據類型和變量名稱這2部分組成的:數據類型 變量名;(1). 數據類型:是指對數據進行分類,如數字類型的數據只能是數字,字符串類型等。(2).
  • C 語言學習之變量、數據類型
    語言是強數據類型語言,即聲明變量時,需要定義好變量的類型。變量相當於內存中一個數據存儲空間的表示,通過變量名可以訪問到該變量【值】,變量使用的基本步驟:int main(){ int a = 0;
  • C#從入門到精通視頻教程
    介紹:《C#從入門到精通》從初學者角度出發,通過通俗易懂的語言,豐富多彩的實例,詳細介紹了使用Visual C#進行WinForm應用程式開發應該掌握的各方面技術。 本資源共分28章,包括初識C#及其開發環境,開始C#之旅,變量與常量,表達式與運算符,字符與字符串,流程語句控制,數組和集合,屬性和方法,結構和類,面向對象技術高級應用,異常處理,Windows窗體,Windows應用程式常用控制項,Windows應用程式高級控制項,數據訪問技術,DataGridView數據控制項,程序調試,迭代器和分部類,泛型的使用,文件及數據流技術,幫助文件的使用
  • python編程入門,零基礎學習Python基礎教程
    階段一:Python開發基礎Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字符編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。階段八:人工智慧Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、數據分析 、圖像識別、自然語言翻譯等。階段九:自動化運維&開發Python全棧開發與人工智慧之自動化運維&開發學習內容包括:CMDB資產管理系統開發、IT審計+主機管理系統開發、分布式主機監控系統開發等。
  • 天天給我打廣告,到底Python和其他程式語言有什麼區別?
    在程式語言的各種對戰中,Python 和他們的區別是什麼呢? Python和Java的區別 Java是一種嚴格的類型語言,這意味著必須顯式聲明變量名。相比之下,動態類型的Python則不需要聲明變量。
  • [GO語言基礎] 一.為什麼我要學習Golang以及GO語言入門普及
    開發的一種靜態強類型、編譯並髮型語言。從各種角度看,Go語言確實 是從C語言繼承了相似的表達式語法、控制流結構、基礎數據類型、調用參數傳值、指針等諸 多編程思想,還有徹底繼承和發揚了C語言簡單直接的暴力編程哲學等。下面是Go語言中來自貝爾實驗室特有並發編程基因的演化過程:
  • 想學習數據科學?我們整理了一份優質編程入門課程清單
    學習時間: 7 周估計投入時間:每周 6-8 小時這是針對沒有編程經驗人群的計算機編程入門課程。 涵蓋 Python 中編程基礎知識,包括基本數據類型(數字類型,字符串,列表,字典和文件),控制流程,函數,對象,方法,欄位和可變性。
  • 二、Python基礎數據類型、變量、常量
    二、Python基礎數據類型、變量、常量1.變量:把程序運行的中間結果臨時的存在內存中,以便後續的代碼調用變量不僅可以是數組,還可以是任意數據類型。在程序中,變量就是用一個變量名表示,變量名必須是大小寫英文、數字、和『_』下劃線組合,並且不能以數字開頭。
  • 教你輕鬆學會C語言系列之——編程中非常重要的概念「變量」
    講軟體編程,就必須得提編程中非常重要的一個概念「變量」。只有正確理解變量的含義及其基礎操作,在其後的學習中才會遊刃有餘。02變量的四大特徵變量包含四大特徵:變量名、變量的值、變量的類型/數據類型、變量的內存地址。
  • 電腦入門程式語言
    今天和大家介紹一下電腦入門編程學什麼語言更合適。首選python語言,python 是一門開源免費、通用型的腳本程式語言,現在社會上會python語言的人很吃香的。它上手簡單,功能強大,堅持「極簡主義」。
  • 人工智慧入門必須攻克三道門檻:數學基礎、英語水平與編程技術
    門檻一:數學基礎我們應該了解過,無論對於大數據還是對於人工智慧而言,其實核心就是數據,通過整理數據、分析數據來實現的,所以數學成為了人工智慧入門的必修課程!總之,線性代數之於人工智慧如同加法之於高等數學,是一個基礎的工具集。2、概率論:如何描述統計規律?