国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#編程自學之數據類型和變量一

2020-01-24 01:26:00
字體:
來源:轉載
供稿:網友

一、數據類型與變量的介紹
在程序運行的過程中計算機需要記錄大量的狀態 數據(這里我們統稱數據)。那這些數據都存放在哪呢?程序在運行過程中的數據一般都存放在內存。那么他們在內存中如何存放的一種描述就是數據類型。變量則就是數據類型的實體。那么我們來看一個例子: 假如現在需要設計一個程序計算整數 10 與 20 的和, 請看如下代碼:

using System;    namespace MyProgram {   class Program   {     static void Main(string[] args)     {       //變量的定義格式:       //數據類型 變量名 賦值運算符 值       int a = 10; // 定義一個整數類型的變量a 并賦值10       int b = 20; // 定義一個整數類型的變量b 并賦值20          int c = a + b;//定義一個整數類型的變量b 賦值為 a + b 的和                Console.WriteLine("10 + 20 = "+c.ToString());//打印結果     }   } }

分析: 首先要計算整數10與20的和,肯定需要有地方來放(在內存中存儲)它們,既然計算整數那么我們就用整數的數據類 型int 定義名字為a 和 b的變量來分別存放10 和 20,在通過加法運算符將和存放在變量c中。調用我們之前了解過的控制臺類將結果輸出到控制臺顯示出來,這里要注意c.ToString(), 因為我們計算的是整數,所使用變量的類型都是整數,而控制臺輸出的是字符串,所以我們需要將調用int類型的一個行為ToString()將自己轉換為字符串類型!這部分將在數據類型的第三篇中介紹!

二、C#基本數據類型與變量

1.數據類型

C#的數據類型分為兩類:一種是值類型 一種是引用類型 (值類型與引用類型將在數據類型的第二篇中介紹),那么我們來看看C#的常用數據類型。

 

2.匿名類型

了解C#常用的基礎數據類型以后,我們在來看看匿名類型,什么是匿名類型呢?
匿名類型:匿名類型就是在變量初始化后根據所賦的值來判斷它屬于哪個類型。不明白沒關系,舉個例子:

using System;    namespace MyProgram {   class Program   {     static void Main(string[] args)     {       int a = 20; //定義一個整數類型的變量       char b = 'A';//定義一個字符類型的變量          var _intType = 20; //定義一個匿名類型的變量 給賦值一個整數數字 20       var _charType = 'A'; //定義一個匿名類型的變量 給賦值一個字符 A          Console.WriteLine(" a 的數據類型為:{0}",a.GetType().ToString()); //打印出變量a的數據類型       Console.WriteLine(" b 的數據類型為:{0}", b.GetType().ToString()); //打印出變量b的數據類型          Console.WriteLine(" _intType 的數據類型為:{0}", _intType.GetType().ToString());//打印出變量_intType的數據類型       Console.WriteLine(" _charType 的數據類型為:{0}", _charType.GetType().ToString());//打印出變量_charType的數據類型     }   } }

首先看 9 ~ 10行,定義了一個整數類型的變量a賦值為20和一個字符類型的變量b為賦值為A,那么 a與b的數據類型分別為整數類型(System.Int32與System.Char).
接著看 12 ~ 13行,定義了兩個匿名類型的變量為: _intType,_charType,分別給 _intType賦了一個整數的值為20,給_charType賦了一個字符為A。在程序運行之前編譯器會根絕變量所賦的值來自動判斷數據類型。
程序執行結果如下:

提示:匿名類型變量在編譯后確定數據類型之后,在程序作用域內該變量的數據類型不可改變!

3.變量與變量的作用域
變量:經過上面的例子與介紹應該已經對變量不陌生了,變量就是數據類型的實例。真正用來存放數據的內存空間或存放數據內存空間地址。
作用域:作用域就是程序使用該變量的一個范圍。一般變量作用域的邊界是由符號{與}來劃定界限的,也就是說在{}內定義的變量,就只能在{}內部來調用。
C#的作用域可分為兩種級別:
1.類屬性級別:當變量定義為類的屬性是,變量的作用域為整個類的內部可訪問。
2.局部級別:當變量被定義在方法或者語句塊中,變量的作用域為最近的{}之間可訪問,局部級別的變量必須初始化。
關于作用域的問題:
1.當一個類定義的變量(屬性)與該類方法中定義的局部變量重名時會怎么樣?
答:當前作用域中的變量與上級作用域中的變量重名時,以當前作用域中的變量為準。
2.當一個類定義的變量(屬性)重名或者類方法中定義的局部變量重名時會怎么樣?
答:同一個作用于中不能出現相同名稱的變量
參考代碼:

class MyClass {   int a = 10;      public void MyMethod()   {     int a = 20; //方法內部變量與類屬性變量 a同時出現時, 以當前方法內(作用域的變量為準)     Console.WriteLine("a:{0}",a); //輸出結果為20        int a = 30; // 編譯錯誤,同一個作用域內不可以出現相同名稱的變量   } }

三、數據類型默認值與初始化
C#中類定義屬性可以不用初始化,那么他們的值分別是什么呢? 未賦值的變量會被自動賦予一個合適的默認值。
例如:
int 類型(數值類型)默認值為0
bool 類型 默認值為false
char 類型 默認值為 ‘/0'
我們還可以在定義類屬性是就初始化他們的值,也可以通過類的構造函數來初始化類屬性

class MyClass {   public int a = 10; //第一種初始化方法在定義是就賦值   public bool b; //默認值為false   public MyClass(bool c)   {     b = c; //通過構造函數初始化類屬性   } }    class Program {   static void Main(string[] args)   {     MyClass mc = new MyClass(true);//通過構造函數傳入true 賦給參數bool類型變量c = true     Console.WriteLine("mc->a :{0}", mc.a.ToString());     Console.WriteLine("mc->b :{0}",mc.b.ToString());   } }

輸出結果如下:

四、靜態變量
靜態變量就是通過類級別去調用,無需創建類型的對象就可以用的變量。
靜態變量關鍵字: static
定義格式: [static 數據類型 變量名]
實例代碼:

using System;    namespace MyProgram {   class MyClass   {     public int a = 10; //變量a為對象級別屬性     public static int b = 20; //變量b為類級別屬性   }      class Program   {     static void Main(string[] args)     {       MyClass mc = new MyClass();       int a_Mc = mc.a; //變量級別需要創建對象MC后通過MC(對象)來訪問          int b_MyClass = MyClass.b; //類屬性可直接通過類名訪問無需創建對象          Console.WriteLine("mc->a :{0}", a_Mc);       Console.WriteLine("MyClass->b :{0}", b_MyClass);     }   } }

運行結果如下:

五、常量
常量就是不能被改變的變量,常量只能定義在類屬性級別,常量也必須是靜態的,并且在定義時就初始化賦值,常量一旦被初始化后就不可以在改變,任何對常量改變語句都將引起編譯器錯誤。因為常量定義時就要賦值所以常量類型只能聲明給值類型(值類型與引用類型下篇講解)。
常量的定義格式: [const 數據類型 變量名]
代碼:

using System;    namespace MyProgram {   class MyClass   {     public const int a = 10; //定義常量a     public const bool b = false; //定義常量b   }      class Program   {     static void Main(string[] args)     {       int a_Const_MyClass = MyClass.a; //常量必須是靜態的,通過類名訪問          bool b_Const_MyClass = MyClass.b; //常量必須是靜態的,通過類名訪問          Console.WriteLine("MyClass->a_Const :{0}", a_Const_MyClass.ToString());       Console.WriteLine("MyClass->b_Const :{0}", b_Const_MyClass.ToString());          //任何試圖修改常量的動作都會引起編譯錯誤       MyClass.a = 20;        MyClass.b = true;     }   } }

正確操作運行結果如下:

修改常量提示錯誤如下:

六、只讀與靜態只讀
回顧下常量在聲明時必須初始化賦值,那么如果我想在運行的時候才賦值怎么辦?那么不用怕C#為我們提供了只讀類型關鍵字為:readonly ,只讀類型跟常量類似也是賦值后就不可以改變,但與常量不同的是它不是強制靜態的,也就是只讀類型是對象級別來訪問的。
只讀類型定義方式:[readonly 數據類型 變量名]
那么如何讓他成為靜態的? 很簡單在前面我們已經介紹過靜態的關鍵字static
靜態只讀類型定義方式:[static readonly  數據類型 變量名]
代碼:

using System;    namespace MyProgram {   class MyClass   {     public readonly int a = 10; //定義只讀變量a     public static readonly bool b = false; //定義靜態只讀變量b   }      class Program   {     static void Main(string[] args)     {       MyClass mc = new MyClass();       int a_ReadOnly_MC = mc.a; //只讀變量是非靜態的,由對象級別訪問          bool b_StaticReadOnly_MyClass = MyClass.b; //靜態只讀變量是類級別變量,有類名訪問          Console.WriteLine("a_ReadOnly_MC : {0}",a_ReadOnly_MC);       Console.WriteLine("b_StaticReadOnly_MyClass :{1}", b_StaticReadOnly_MyClass);          //任何對只讀類型的修改都將引起編譯錯誤       mc.a = 20;       MyClass.b = true;     }   } }

正確操作運行結果如下:


修改只讀變量錯誤如下:

七、需要注意的細節
1.變量作用域是否可以出現相同變量名?
答:相同作用域時,變量不可以重名,在當前作用域與上級作用域的變量重名時,以變量所在作用域為主。
2.常量是否可以在對象級別訪問?
答:常量不可以在對象級別訪問,常量默認為靜態的,由類級別訪問。
3.常量(const)與(readonly)只讀的區別?
答:相同點:是都是賦值后就不可以改變,
不同點:
1.Const 必須在聲明時就賦值,readonly 可以在初始化過程中賦值.
2.Const只可以修飾值類型,而readonly可以修飾任意類型.
3.Const是類級別訪問,readonly是對象級別訪問

以上講解的類的屬性都代表成員變量,希望對大家的學習有所幫助。之后還有相關文章繼續更新,希望大家繼續關注。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦后旗| 永善县| 雅安市| 保山市| 晋中市| 偏关县| 霍林郭勒市| 彝良县| 武义县| 西盟| 东方市| 乌拉特后旗| 共和县| 沙洋县| 临夏县| 东宁县| 洛阳市| 惠东县| 华蓥市| 乌苏市| 来安县| 安阳县| 永城市| 敖汉旗| 郯城县| 抚州市| 含山县| 澳门| 北票市| 洛阳市| 盐山县| 定陶县| 自贡市| 元氏县| 湖口县| 东山县| 游戏| 岢岚县| 同心县| 桓台县| 句容市|