C入門教學教程_第1頁
C入門教學教程_第2頁
C入門教學教程_第3頁
C入門教學教程_第4頁
C入門教學教程_第5頁
已閱讀5頁,還剩435頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1會計學C入門教學教程入門教學教程代碼代碼被執行被執行C+VB編譯器編譯器編譯器編譯器可執行可執行代碼代碼可執行可執行代碼代碼RUNTIMERUNTIME代碼代碼被執行被執行C+VB編譯器編譯器編譯器編譯器可執行可執行代碼代碼可執行可執行代碼代碼RUNTIMERUNTIMEIL+元數據CLRMSIL+元數據元數據機器機器代碼代碼代碼代碼被執行被執行CLR第一次編譯第一次編譯第二次編譯第二次編譯.NET 程序被編譯兩次,第一次編譯很慢,而第二次程序被編譯兩次,第一次編譯很慢,而第二次編譯較快!編譯較快!語言語言編譯器編譯器.NET 源代碼源代碼MSIL+元數據機器代碼代碼 被執行CLRMSIL幫

2、助語言實現互操作IL 不是字節代碼,但很接近字節代碼。因此,執行應用程序時,IL 到機器碼的轉換速度非常快!通過 CLR將 MSIL 轉換為具體 CPU 的代碼CPU 無關的指令集語言語言編譯器編譯器.NET 源代碼moduleCLR.NET 源代碼MSIL+元數據機器代碼代碼被執行管理內存易于設計組件和應用程序,其對象可以跨語言互動跨語言集成(特別是跨語言繼承)JIT 編譯器:一次編譯,就可運行在支持運行庫的任何 CPU 和操作系統上語言語言編譯器編譯器通用語言運行時通用語言運行時 (CLR)IO, Drawing, Threading操作系統操作系統.Net Framework 類類庫庫

3、(FCL)CLS、CTS 和和 MSIL 緊密配合以實現語言互操作性緊密配合以實現語言互操作性2.Hclass A 3.cpp#include “1.h”#include “2.h”.3.cppclass A class A namespace a2class A 3.csusing a1;using a2;a1.Aa2.A命名空間命名空間說明說明System.Drawing 處理圖形和繪圖,包括打印處理圖形和繪圖,包括打印 System.Data 處理數據存取和管理,在定義處理數據存取和管理,在定義 ADO.NET 技術中扮技術中扮演重要角色演重要角色System.IO 管理對文件和流的同步

4、和異步訪問管理對文件和流的同步和異步訪問System.Windows 處理基于窗體的窗口的創建處理基于窗體的窗口的創建System.Reflection 包含從程序集讀取元數據的類包含從程序集讀取元數據的類System.Threading 包含用于多線程編程的類包含用于多線程編程的類 System.Collections 包含定義各種對象集的接口和類包含定義各種對象集的接口和類Console.WriteLine(Hello World);輸出輸出“Hello World”應用程序文件應用程序文件聲明 HelloWorld 類描述代碼的注釋程序入口點, Main 的返回類型為 void控制臺類的

5、 WriteLine() 方法用于顯示輸出結果導入 System 命名空間聲明命名空間 Notepad將文件保存為將文件保存為 *.cs第一個第一個 C#程序程序 :HelloWorld1. using System;2. class HelloWorld3. 4. static void Main( )5. 6. Console.WriteLine(“Hello, World!”);7. 8. HelloWorld.cs第一個第一個 C#程序程序 :HelloWorld1: using System;第第 1 行:行:using 關鍵字關鍵字用來引用用來引用.NET框架類庫中的資源框架類庫中

6、的資源通常在程序文件的開頭使用通常在程序文件的開頭使用如果程序中需要多種資源,可以使用多次如果程序中需要多種資源,可以使用多次usingSystem 命名空間命名空間System命名空間提供了構建應用程序所需的系統統能的訪命名空間提供了構建應用程序所需的系統統能的訪問問第一個第一個 C# 程序程序 :HelloWorld2: class HelloWorld3: .8: 第第 2,3,8 行:行:類類在在C#或其他面向對象語言中,需要編寫類或其他面向對象語言中,需要編寫類使用關鍵字使用關鍵字class定義一個類,類的內容放在一對定義一個類,類的內容放在一對 中中示例中定義了一個名為示例中定義了

7、一個名為HelloWorld的類的類第一個第一個 C# 程序程序 :HelloWorld4: static void Main( )5: .7: 第第 4,5,7 行:行:Main 方法方法w Main 方法是應用程序的入口點,編譯器將由該處開始執行方法是應用程序的入口點,編譯器將由該處開始執行程序程序w 方法體也放在一對方法體也放在一對 中中w 每個每個C#的應用程序都必須包含的應用程序都必須包含Main方法方法4: static void Main( )5: .7: 第第 4,5,7 行:行:Main方法方法 w static表示表示Main方法是一個全局方法方法是一個全局方法w void

8、表示表示Main方法沒有任何返回值,即返回值是空方法沒有任何返回值,即返回值是空w 參數放在小括號中定義。此處括號內沒有內容,表明參數放在小括號中定義。此處括號內沒有內容,表明Main方法方法沒有任何參數沒有任何參數第一個第一個 C# 程序程序 :HelloWorld6: Console.WriteLine(“Hello, World!”);第第 6 行:行: 語句語句w 在在C#中要執行的指令中要執行的指令w 語句之間用;分隔,編譯器通過分號來區分多個語句語句之間用;分隔,編譯器通過分號來區分多個語句w 使用大括號使用大括號 標識某個代碼塊的開始和結束,從而可以對語標識某個代碼塊的開始和結束

9、,從而可以對語句進行組合。大括號必須成對匹配。句進行組合。大括號必須成對匹配。第一個第一個 C# 程序程序 :HelloWorld6: Console.WriteLine(“Hello, World!”);第第 6 行:行: 語句語句w HelloWorld程序的主要目的就是在屏幕上顯示一條問候程序的主要目的就是在屏幕上顯示一條問候 WriteLine方法用來將問候語寫到標準輸出設備上。方法用來將問候語寫到標準輸出設備上。w Console代表標準輸出設備代表標準輸出設備- 屏幕,它屬于屏幕,它屬于System命名空間命名空間 w WriteLine方法是方法是Console類的方法。訪問類或

10、對象的方法使用類的方法。訪問類或對象的方法使用 點取符點取符.來完成。來完成。w 字符串用雙引號字符串用雙引號“ ”表示表示w 字符串字符串“Hello,World”是是WriteLine方法的參數,表示屏幕輸出方法的參數,表示屏幕輸出 的內容的內容第一個第一個 C# 程序程序 :HelloWorld類型類型描描 述述范圍范圍/精度精度例子例子object所有其它類型的最根本的基所有其它類型的最根本的基礎類型礎類型object o = null;string字符串類型,一個字符串是字符串類型,一個字符串是一個一個Unicode字符序列字符序列string s= Hello;sbyte8-bit

11、 有符號整數類型有符號整數類型128.127sbyte val = 12;short16-bit有符號整數類型有符號整數類型32,768.32,767short val = 12;int32-bit有符號整數類型有符號整數類型2,147,483,648.2,147,483,647int val = 12;long64-bit有符號整數類型有符號整數類型9,223,372,036,854,775,808.9,223,372,036,854,775,807long val1 = 12;long val2 = 34L;byte8-bit無符號整數類型無符號整數類型0.255byte val1 = 1

12、2;byte val2 = 34U;ushort16-bit無符號整數類型無符號整數類型0.65,535ushort val1 = 12;ushort val2 = 34U;uint32-bit無符號整數類型無符號整數類型0.4,294,967,295uint val1 = 12;uint val2 = 34U;類型類型描描 述述范圍范圍/精度精度例子例子ulong64-bit無符號整數類型無符號整數類型0.18,446,744,073,709,551,615ulong val1 = 12;ulong val2 = 34U;ulong val3 = 56L;ulong val4 = 78UL;

13、float單精度浮點數類型單精度浮點數類型1.5 1045 至至 3.4 1038,7 位精度位精度float val = 1.23F;double雙精度浮點數類型雙精度浮點數類型5.0 10324 至至 1.7 10308,15 位精度位精度double val1 = 1.23;double val2 = 4.56D;bool布爾類型類型布爾類型類型; 一個布爾類型數據一個布爾類型數據不是真就是假不是真就是假true,falsebool val1 = true;bool val2 = false;char字符類型字符類型; 一個字符數據是一個一個字符數據是一個Unicode字符字符char

14、val = h;decimal精確十進制類型,有精確十進制類型,有28個有效位個有效位1.0 1028 至至 7.9 1028,28 位精度位精度decimal val = 1.23M;類型類別后綴示例/允許的值bool布爾布爾無無true或或falseint整數整數無無int x = 100uint,ulog整數整數U或或Uuint x = 1000ulong,ulong長整型長整型L或或llong x = 100000Lulong無符號長整型無符號長整型ul,uL,Ul,UL,lu,Lu,lU或或LUulong x = 4324ulfloat單精度浮點數類型單精度浮點數類型F或或ffloa

15、t x = 34.76Fdouble雙精度浮點數類型雙精度浮點數類型D或或ddouble x = 763.7245Ddecimal精確十進制類型精確十進制類型M或或mdecimal x = 1.544Mchar字符字符無無char x = astring字符串字符串無無string =”abc”C# 中常用的字符串處理方法:中常用的字符串處理方法:Equals() :比較兩個字符串的值是否相等:比較兩個字符串的值是否相等ToLower():將字符串轉換成小寫形式:將字符串轉換成小寫形式IndexOf():查找某個字符在字符串中的位置:查找某個字符在字符串中的位置SubString():從字符串

16、中截取子字符串:從字符串中截取子字符串Join():連接字符串:連接字符串Split():分割字符串:分割字符串Trim():去掉字符串兩邊的空格:去掉字符串兩邊的空格using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _011 class Program static void Main(string args) string filename = 1.2.txt; int indexDot = filename.LastIndexOf(.); string e

17、xtendName = dat; filename = filename.Substring(0, indexDot+1); filename += extendName; Console.WriteLine(filename); static void Main(string args) string email; / 電子郵件地址電子郵件地址 Console.WriteLine(請輸入你的郵箱請輸入你的郵箱:); email = Console.ReadLine(); Console.WriteLine(你的郵箱是你的郵箱是 0, email); 需實現的功能:需實現的功能:1、 輸入輸入

18、 yes 時,程序循環執行時,程序循環執行2、 兼容以下各種形式兼容以下各種形式 yes(YES、yes、 YeS .)3、 提取郵箱的用戶名提取郵箱的用戶名while (true)輸入一個字符串,輸出每個單詞,重新用下劃線輸入一個字符串,輸出每個單詞,重新用下劃線連接輸出連接輸出Split()方法方法分割字符串分割字符串splitStrings = inputString.Split( );/ 將分割后的字符串使用下劃線連接在一起將分割后的字符串使用下劃線連接在一起joinString = string.Join(_, splitStrings); 返回值為返回值為字符串數組字符串數組字符串

19、變量名字符串變量名參數:分隔符(參數:分隔符(char型)型)返回字符串返回字符串靜態方法靜態方法參數參數1:連接符:連接符參數參數2:字符串數組:字符串數組Join()方法方法連接字符串連接字符串如果字符串兩邊有空格?如果字符串兩邊有空格?string name = 李四李四;Console.WriteLine(My name is + name + ,I am + 18);string name = 李四李四;Console.WriteLine(My name is 0 ,I am 1 , name,18);格式字符串格式字符串變量列表變量列表record = string.Format(

20、 姓名姓名:0n出生年月出生年月:1n身高身高:2n 血型血型:3n星座星座:4n最喜歡的食物最喜歡的食物:5, name, birthday, height, bloodType, planet, favourFood);Console.WriteLine(n這是你的個人檔案這是你的個人檔案:);Console.WriteLine(record);參數與參數與 WritLine() 方法相似方法相似string myString = string.Format(格式字符串格式字符串, 參數列表參數列表);string myString = string.Format (0 乘以乘以 1 等于

21、等于 2 , 2, 3, 2*3);格式字符串格式字符串代表代表參數列表參數列表2乘以乘以3等于等于6包括占位符包括占位符xstring yi = 一一;string er = 二二;string san = 三三;string word = string.Format( 獨獨 _ 無無 _,_ 心心 _ 意意,垂涎垂涎 _ 尺尺,略知略知 _ _,舉舉_ 反反 _, yi, er, san);Console.WriteLine(word);string yi = 一一;string er = 二二;string san = 三三;string word = string.Format( 獨獨

22、0無無1,2心心1意意,垂涎垂涎2尺尺,略知略知01,舉舉0反反2, yi, er, san);Console.WriteLine(word);qaccess modifiers enum :enum_base enum bodyclass MyAppenum Fabric : int Cotton = 1, Silk = 2, Wool = 4static void Main() Fabric fab = Fabric.Cotton; int fabNum = (int) fab; string fabType = fab.ToString(); Console.WriteLine(fab)

23、;整型,默認為整型,默認為int默認為默認為internalstatic void Main(string args)/ 聲明布爾型、字符串型、整型、短整型和浮點型變量 bool t = false;short n1 = 30;int n2 = 1200;string str = jeny;float n3 = 23.1f;/ 顯示變量值 Console.WriteLine (布爾值 = + t);Console.WriteLine (短整型值 = + n1);Console.WriteLine (整型值 = + n2);Console.WriteLine (字符串值 = + str);Con

24、sole.WriteLine (浮點值 = + n3);變量中存儲的值取決于該變量的類型static void Main(string args)/ PI常量PIconst float _pi = 3.1415169F;/ 由地球引力引起的加速度常量,單位為 cm/s*s const float _gravity = 980;/ 鐘擺的長度 int length = 60;/ 鐘擺的周期 double period = 0;/ 鐘擺周期的計算公式 period = 2 * _pi * Math.Sqrt(length / _gravity);Console.WriteLine (鐘擺的周期為

25、0 秒, period);聲明常量在表達式中使用常量qconst 關鍵字用于聲明常量static void Main(string args)int count;Console.WriteLine(“請輸入準備登機的乘客人數 );count=int.Parse(Console.ReadLine();/ 聲明一個存放姓名的字符串數組,其長度等于乘客人數 string names = new stringcount;/ 用一個 for 循環來接受姓名 for(int i=0; i檢查一個數是否大于檢查一個數是否大于另一個數另一個數 操作數操作數1 操作數操作數2檢查一個數是否小于檢查一個數是否小于

26、另一個數另一個數 操作數操作數1 =檢查一個數是否大于檢查一個數是否大于或等于另一個數或等于另一個數 操作數操作數1 = 操作數操作數2= 檢查一個數是否小于檢查一個數是否小于或等于另一個數或等于另一個數 操作數操作數1 = 操作數操作數2= 檢查兩個值是否相等檢查兩個值是否相等 操作數操作數1 = 操作數操作數2!= 檢查兩個值是否不相檢查兩個值是否不相等等操作數操作數1 != 操作數操作數2類別類別運算符運算符說明說明表達式表達式成員訪問運算符成員訪問運算符.用于訪問數據結構的成員用于訪問數據結構的成員 數據結構數據結構.成員成員賦值運算符賦值運算符=給變量賦值給變量賦值 操作數操作數1

27、= 操作數操作數2邏輯運算符邏輯運算符 & 對兩個表達式執行邏輯對兩個表達式執行邏輯“與與”運算運算 操作數操作數1 & 操作數操作數2|對兩個表達式執行邏輯對兩個表達式執行邏輯“或或”運算運算 操作數操作數1 | 操作數操作數2!對兩個表達式執行邏輯對兩個表達式執行邏輯“非非”運算運算! 操作數操作數( ) 將操作數強制轉換為給定將操作數強制轉換為給定的數據類型的數據類型 (數據類型數據類型) 操作數操作數賦值運算符賦值運算符 (=)變量 = 表達式;例如:身高 = 177.5;體重 = 78;性別 = “m”;一元運算符一元運算符 (+/-)Variable +; 相當于相

28、當于 Variable = Variable + 1;Variable -; 相當于相當于 Variable = Variable - 1;運算符運算符計算方法計算方法表達式表達式求值求值結果(設結果(設 X = 10)+=運算結果運算結果 = 操作數操作數1 + 操作數操作數2X+= 2X=X+212-=運算結果運算結果 = 操作數操作數1 - 操作數操作數2X-= 2X=X-28*=運算結果運算結果 = 操作數操作數1 * 操作數操作數2X*= 2X=X*220/=運算結果運算結果 = 操作數操作數1 / 操作數操作數2X/= 2X=X/25%=運算結果運算結果 = 操作數操作數1 % 操

29、作數操作數2X%= 2X=X%20C# 運算符的優先級運算符的優先級優先級優先級說明說明運算符運算符結合性結合性1括號括號( )從左到右從左到右2自加自加/ /自減運算符自減運算符+/-從右到左從右到左3乘法運算符乘法運算符除法運算符除法運算符取模運算符取模運算符*/%從左到右從左到右4加法運算符加法運算符減法運算符減法運算符+-從左到右從左到右5小于小于小于等于小于等于大于大于大于等于大于等于=從左到右從左到右6等于等于不等于不等于=!=從左到右從左到右從左到右從左到右7邏輯與邏輯與&從左到右從左到右8邏輯或邏輯或|從左到右從左到右9賦值運算符和快捷運賦值運算符和快捷運算符算符= +

30、= *= /= %= -=從右到左從右到左語法:語法: if () else q選擇結構用于根據表達式的值執行語句if else條件:只能是條件:只能是bool類型的值類型的值 switch (“cotton”)case “COTTON”: case “cotton”: break;case 值3: case 值4: break;switchcase 表達式可以是表達式可以是int、字符或字、字符或字符串符串C#不允許從一個不允許從一個case塊繼塊繼續執行到下一個續執行到下一個case塊。每塊。每個個case塊必須以一個跳轉控塊必須以一個跳轉控制語句制語句break、goto或或return

31、結束結束多個多個case標簽可以對應一個標簽可以對應一個代碼塊代碼塊條件:只能是條件:只能是bool類型的值類型的值 static void Main(string args)/ 存放字母的個數存放字母的個數 int Letters = 0;/ 存放數字的個數存放數字的個數int Digits = 0;/ 存放標點符號的個數存放標點符號的個數int Punctuations = 0;/ 用戶提供的輸入用戶提供的輸入 string instr;Console.WriteLine(請輸入一個字符串請輸入一個字符串 );instr = Console.ReadLine();/ 聲明聲明 foreac

32、h 循環以遍歷輸入的字符串中的每個字符。循環以遍歷輸入的字符串中的每個字符。 foreach(char ch in instr) / 檢查字母檢查字母if(char.IsLetter(ch) Letters+;/ 檢查數字檢查數字if(char.IsDigit(ch) Digits+;/ 檢查標點符號檢查標點符號if(char.IsPunctuation(ch) Punctuations+;Console.WriteLine(“字母個數為:字母個數為: 0, Letters);Console.WriteLine(“數字個數為:數字個數為: 0, Digits);Console.WriteLin

33、e(“標點符號個數為:標點符號個數為: 0, Punctuations);為所有計數器設置初始值接受輸入對輸入的每一個字符都進行循環使用了所有輸入的字符之后,循環自動終止using System;public class WriteTestpublic static void Main() int array = 1, 2, 3, 4, 5 ; foreach (int item in array) item += item; Console.WriteLine(item); C#預處理命令預處理命令說明說明#define#undef用于定義一個符號,后取消對一個符號得定用于定義一個符號,后取

34、消對一個符號得定義。如果定義了一個符號,那么在義。如果定義了一個符號,那么在#if指令中指令中使用時這個符號計算為使用時這個符號計算為true。#if#elif#else#endif類似類似C#中得中得if、elseif和和else語句語句#line改變行號序列,并且可以標識該行的源文件改變行號序列,并且可以標識該行的源文件#region#endregion用于指定一個代碼塊,使用用于指定一個代碼塊,使用Visual studio.NET的大綱特性時可以展開或折疊的大綱特性時可以展開或折疊這個代碼塊這個代碼塊#error導致編譯器報告一個致命錯誤導致編譯器報告一個致命錯誤#warming導致編

35、譯器報告一個警告,并繼續處理導致編譯器報告一個警告,并繼續處理數據輸入數據輸入(Read,ReadLine)Console.Read ()方法方法Console.Read方法用來從控制臺讀取一個字符,其定義方法用來從控制臺讀取一個字符,其定義如下如下: Public static int Read();Read方法返回所讀取的字符的方法返回所讀取的字符的Unicode編碼值。編碼值。注意:注意: Read方法的返回變量是方法的返回變量是32位的整數,如果需要得位的整數,如果需要得到輸入的字符,則必須通過數據類型的顯式轉換才能得到相到輸入的字符,則必須通過數據類型的顯式轉換才能得到相應的字符。應

36、的字符。Console.Read ()/ReadTest.csusing System;public class ReadTestpublic static void Main()inti;charch;i=Console.Read();ch=(char) i; /顯式類型轉換顯式類型轉換Console.WriteLine(i);Console.WriteLine(ch);運行結果:A65AConsole.ReadLine ()方法方法Console.ReadLine方法用來從控制臺讀取一行字符,定方法用來從控制臺讀取一行字符,定義如下義如下: Public static string Rea

37、dLine();Read方法返回所讀取一行字符的字符串。一般情況下,一方法返回所讀取一行字符的字符串。一般情況下,一行輸入是指從輸入一個字符開始,遇到回車符號為止。行輸入是指從輸入一個字符開始,遇到回車符號為止。/ReadLine.csusing System;using System.Globalization;public class ReadTestpublic static void Main()inti;doubled;stringstr;str=Console.ReadLine();/由控制臺輸入整數字符串由控制臺輸入整數字符串i=int.Parse(str);/整數字符串轉換為整

38、數整數字符串轉換為整數Console.WriteLine(i);str=Console.ReadLine();/由控制臺輸入浮點字符串由控制臺輸入浮點字符串d=double.Parse(str);/浮點字符串轉換為浮點數浮點字符串轉換為浮點數Console.WriteLine(d);運行結果:12341234123.456123.456數據輸出數據輸出(Write WriteLine)Console.Write ()方法方法Console.Write方法用來向控制臺輸出一個字符,但控制臺的光標不方法用來向控制臺輸出一個字符,但控制臺的光標不會移到下一行。其定義如下會移到下一行。其定義如下: p

39、ublic static void Write(XXX value); public static void Write(string format,object o1,);注意:格式化注意:格式化format同格式化函數同格式化函數Format中的格式化串類似,其格中的格式化串類似,其格式如下:式如下: N,M:formatstring其中,字符其中,字符N表示輸出變量的序號,表示輸出變量的序號,M表示輸入變量在控制臺中所占的表示輸入變量在控制臺中所占的字符空間,如果這個數字為負數,則按照左對齊的方式輸出,若為正數,字符空間,如果這個數字為負數,則按照左對齊的方式輸出,若為正數,則按照右對齊

40、方式輸出。則按照右對齊方式輸出。/WriteTest.csusing System;public class WriteTest public static void Main() int i=32767; double d=456.56789; /由控制臺。按照十進制輸出整數及浮點數由控制臺。按照十進制輸出整數及浮點數Console.Write(“i=0 x0,8:Xtd=1,10:F3”,i,d);/由控制臺。按照十六進制輸出整數由控制臺。按照十六進制輸出整數Console.Write(“i=0 x0,-8:Xtd=1,-10:F3”,i,d); 輸出結果:輸出結果: i=0 x 7FFF

41、 d= 456.568i=0 x7FFF d=456.568Console.WriteLine()方法方法Console.WriteLine方法用來向控制臺輸出一行字符,即方法用來向控制臺輸出一行字符,即WriteLine方法在輸出信息之后,在信息的尾部自動添加方法在輸出信息之后,在信息的尾部自動添加“rn”字符,表示回車換行。字符,表示回車換行。 public static void WriteLine(XXX value); public static void WriteLine(string format,object o1,);注意:格式化注意:格式化format同同WriteLin

42、e中的格式化參數完全一中的格式化參數完全一樣。樣。/WriteLine.csusing System;public class WriteTestpublic static void Main()inti=32767;double d=456.56789;/格式化輸出格式化輸出Console.WriteLine(“i=0 x0,8:Xtd=1,10:F3”,i,d);Console.WriteLine(“i=0 x0,-8:Xtd=1,-10:F3”,i,d);Console.WriteLine(“i=0 x0,-8:Dtd=1,-10:C3”,i,d);輸出結果:輸出結果:i=0 x 7FF

43、F d= 456.568i=0 x7FFF d=456.568i=32767 d=¥456.568double speed = 0;public double speed;類聲明類聲明常量常量字段字段構造函數構造函數成員屬性成員屬性方法方法class Furniture const double salesTax = .065; private double purchPrice; private string vendor, inventoryID; public Furniture(string vendor, string inventID, double purchPrice) thi

44、s.vendor = vendor; this.inventoryID = inventID; this.purchPrice = purchPrice; public string MyVendor get return vendor; public double CalcSalesTax(double salePrice) return salePrice * salesTax; internalprivate錯誤錯誤析構函數Dispose方法意義銷毀對象銷毀對象調用方式不能被顯示調用,在GC回收是被調用需要顯示調用或者通過using語句調用時機不確定確定,在顯示調用或者離開using程序

45、塊非托管資源:非托管資源:Dispose方法方法class MyApp static void Main() Student stu = new Student(); Console.WriteLine(stu.serialNumber); Student stu1 = new Student(); Console.WriteLine(stu1.serialNumber); 解決:解決: C#中支持靜態構造函數,靜態構造函數在類中第一個對象初始化或引用中支持靜態構造函數,靜態構造函數在類中第一個對象初始化或引用任何靜態成員之前執行。任何靜態成員之前執行。運行結果:運行結果:實例數為:實例數為:

46、1實例數為:實例數為:2using System.Drawing;public class myRectprivate Point p0;private int a, b;public myRect(int aa,int bb, Point p) a = aa;b = bb;p0 = p; public int Area() /求面積求面積Return (a * b); public int round() /求周長求周長Return (2 * (a + b); public void move(int dx, int dy) /移動頂點移動頂點 p0.X += dx; p0.Y += dy;

47、例如3-4 :public class Operate public long Add(long a, long b) return(a+b); public double Add(double a, double b) return(a+b); public static void hi() /靜態方法 Console.WriteLine(str); /可以訪問靜態成員/Add(3,5); /不能訪問實例成員 private static string str=you use s static method;再main()方法中調用下面的語句:Operate.hi();n在在Main()方法

48、中執行下面的語句:方法中執行下面的語句:valtest1 v1=new valtest1();valtest2 v2=new valtest2();int ii=5;Console.WriteLine(ii);v1.valdiliver(ii); /值參數的值傳遞值參數的值傳遞Console.WriteLine(ii); Console.WriteLine(v2.str);v1.valdiliver(v2); /引用參數的值傳遞引用參數的值傳遞Console.WriteLine(v2.str );輸出的結果如下:輸出的結果如下:5 /傳遞前實參值傳遞前實參值10 /形參值形參值5 /傳遞后實參

49、值傳遞后實參值this string /傳遞前實參值傳遞前實參值this string changed! /形參值形參值this string changed! /傳遞后實參值傳遞后實參值很多情況下,我們要使用參數的引用傳遞。引用傳遞是傳遞變量很多情況下,我們要使用參數的引用傳遞。引用傳遞是傳遞變量的地址,使得形參和實參指向同一內存空間,方法中對于形參的的地址,使得形參和實參指向同一內存空間,方法中對于形參的修改,實際上就是對于實參的修改。修改,實際上就是對于實參的修改。由調用方法初始化參數值由調用方法初始化參數值。實參、形參中實參、形參中ref不能省不能省 。public void Calc

50、uArea(long L, ref long W) double Area; L+=10; W+=10; Area = (L * W); Console.WriteLine(Area); 假設過程調用如下:假設過程調用如下:len= 5;wid= 5;CalcuArea(len, ref wid); 調用之后CalcuArea()函數之后:函數之后:len仍為仍為5wid變為變為15Area=225被調用方法初始化參數值,可以不用初始化就作為參數傳遞被調用方法初始化參數值,可以不用初始化就作為參數傳遞給方法。給方法。實參、形參中實參、形參中out不能省不能省 。 例例3-6:輸出參數的使用。:

51、輸出參數的使用。public class Test static void SplitPath(string path, out string dir, out string name) int i = path.Length; while (i 0) char ch = pathi 1; if (ch = ) break; i-; dir = path.Substring(0, i); name = path.Substring(i); static void Main() string dir, name; /變量作為輸出參數無須明確賦值變量作為輸出參數無須明確賦值 SplitPath(c

52、:WindowsSystemhello.txt, out dir, out name); Console.WriteLine(dir); Console.WriteLine(name); c:WindowsSystemhello.txt例如,下面定義一個具有例如,下面定義一個具有params參數的求平均值函數:參數的求平均值函數:public double AVG( params int Nums) int Sum=0; int Count=0; foreach(int n in Nums) Sum+=n; Count+=1; Nums0 = 100; return (Sum/Count);調

53、用該函數時,可以采用下面的語句:調用該函數時,可以采用下面的語句:Class1 a = new Class1();double d = a.AVG(13,27,33,25,78);另外,還可以傳遞一個實際的數組:另外,還可以傳遞一個實際的數組:int args = 31,41,46,53,28;double d = a.AVG(args);args0 = ?屬性的建立要使用屬性聲明,語法如下:屬性的建立要使用屬性聲明,語法如下:訪問修飾符訪問修飾符 類型名類型名 屬性名屬性名 get return 字段字段; set 私有字段私有字段 = value; public class checkva

54、l private string p_PropVal; /聲明一個私有變量聲明一個私有變量p_PropVal public string str1 /聲明屬性聲明屬性str1 get /返回存儲在私有變量中的屬性值返回存儲在私有變量中的屬性值 return p_PropVal; set /存儲屬性值到私有變量存儲屬性值到私有變量 if (Convert.ToString(value).Length = 10) p_PropVal = value; else Console.WriteLine(too many words); 例例3-7:public class checkval privat

55、e static string p_time=00:00:00;/靜態私有字段靜態私有字段 public static string mytime /靜態屬性靜態屬性 get return p_time; public static string mytime1 /靜態屬性靜態屬性 set p_time = value; static void Main() Console.WriteLine(checkval.mytime); checkval.mytime1 = 10:2:22; Console.WriteLine(now is + checkval.mytime); 輸出結果為:輸出結果

56、為:00:00:00now is 10:2:22訪問修飾符 數據類型 this數據類型 標識符get;set;語法參數化成員屬性:包含set、get方法。與成員屬性不同:它可以接受1個或多個參數使用this作為索引器的名字class Photostring _title;public Photo(string title)this._title = title;public string Titlegetreturn _title;以 Title 屬性表示照片將照片存放于數組 photos 中class Album/ 該數組用于存放照片Photo photos;public Album(int

57、 capacity)photos = new Photocapacity;public Photo thisint indexget/ 驗證索引范圍if (index = photos.Length)Console.WriteLine(索引無效);/ 使用 null 指示失敗return null;/ 對于有效索引,返回請求的照片return photosindex;setif (index = photos.Length)Console.WriteLine(索引無效);return;photosindex = value;帶有 int 參數的 Photo 索引器讀/寫索引器public Ph

58、oto thisstring titleget/ 遍歷數組中的所有照片foreach (Photo p in photos) / 將照片中的標題與索引器參數進行比較 if (p.Title = title) return p;Console.WriteLine(未找到);/ 使用 null 指示失敗return null;帶有 string 參數的 Photo 索引器只讀索引器static void Main(string args)/ 創建一個容量為 3 的相冊Album family = new Album(3);/ 創建 3 張照片Photo first = new Photo(Jeny

59、 );Photo second = new Photo(Smith);Photo third = new Photo(“Lono);/ 向相冊加載照片 family0 = first; family1 = second; family2 = third;/ 按索引檢索Photo objPhoto1 = family2; Console.WriteLine(objPhoto1.Title);/ 按名稱檢索Photo objPhoto2 = family“Jeny; Console.WriteLine(objPhoto2.Title); class Car int color; int door;

60、 int speed; void PushBreak() public void AddOil() class TrashCar : Car class MyApp static void Main() TrashCar myCar = new TrashCar(); myCar.AddOil(); myCar.PushBreak(); class Car public Car(int i) class TrashCar : Car public TrashCar(int i) class Car public Car(int i) class TrashCar : Car public TrashCar(int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論