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

首頁 > 開發 > 綜合 > 正文

Visual C# 2005快速入門之編寫方法

2024-07-21 02:28:55
字體:
來源:轉載
供稿:網友
  在下面的練習中,將創建一個應用程序,它包含的一個方法能夠計算一名顧問的收費金額——假定該顧問每天收取固定的費用,將根據工作了多少天來收費。首先要開發應用程序的邏輯,然后利用“生成方法存根向導”來寫出這個邏輯使用的方法。接著,我們將在一個控制臺應用程序中運行方法,以獲得對該程序的最終印象。最后,我們將使用visual studio 2005調試器來檢查方法調用。

  開發應用程序邏輯

  1. 在visual studio 2005中打開my documents文件夾下的/microsoft press/visual csharp step by step/chapter 3/dailyrate子文件夾中的dailyrate項目。

  2. 在“解決方案資源管理器”中,雙擊program.cs文件,以便在“代碼和文本編輯器”窗口中顯示程序。

  3. 在run方法主體中添加以下語句:
 
double dailyrate = readdouble("enter your daily rate: ");
int noofdays = readint("enter the number of days: ");
writefee(calculatefee(dailyrate, noofdays));

  應用程序啟動時,run方法將由main方法調用。

  剛才在run方法中添加的代碼塊會調用readdouble方法(馬上就要開始寫這個方法),以便讓用戶輸入顧問的日費率。下一個語句調用readint方法(也馬上由我們來寫)來獲取天數。最后將調用writefee方法(等待編寫),以便在屏幕上顯示結果。注意,傳給writefee的值是calculatefee方法(最后一個要寫的方法)返回的值,該方法獲取日費率和天數,并計算出要支付的總金額。
 
  注意 由于尚未寫好readdouble,readint,writefee或者calculatefee方法,所以“智能感知”無法在輸入上述代碼的時候自動列出它們。另外,先不要試圖生成程序,因為肯定會失敗。

  使用“生成方法存根向導”來編寫方法

  1. 在“代碼和文本編輯器”窗口中,單擊run方法中的readdouble方法調用。

  隨后會在readdouble的第一個字母("r")下方顯示一個小的下劃線圖標。將鼠標指針移至字母"r",會自動出現一個圖標。將鼠標指針懸停在這個圖標上方,會顯示一條工具提示:“用于生成方法存根的選項(shift + alt + f10)”,并提供了一個下拉菜單。單擊下拉菜單,就會看到一個選項:生成"dailyrate.program"中的"readdouble"的方法存根。

  2. 單擊“生成"dailyrate.program"中的"readdouble"的方法存根”選項。

  隨后,“生成方法存根向導”會檢查對readdouble方法的調用,判斷參數類型和返回值,并生成一個具有默認實現的方法,如下所示:

private double readdouble(string p)
{
    throw new exception("the method or operation is not implemented.");
}

  新方法是使用一個private限定符來創建的。方法主體目前只是擲出一個異常。我們將在下一步將主體替換成自己的語句。

  3. 從readdouble方法中刪除throw new exception(…);語句,將它替換成以下代碼行:

console.write(p);
string line = console.readline();
return double.parse(line);

  上述代碼塊會將變量p中的字符串輸出到屏幕。該變量是調用方法是傳遞的字符串參數,其中包含提示用戶輸入日費率的一條消息。用戶輸入一個值,該值將通過readline方法讀入一個字符串中,并通過double.parse方法轉換成一個double值。結果將作為方法調用的返回值傳回。
 
  注意 readline方法是與writeline配套的一個方法,它從鍵盤讀取用戶直到按回車鍵之前的輸入。用戶輸入的文本將作為返回值傳回。

  4. 在run方法中,單擊readint方法調用,按照和前面一樣的過程,為readint方法生成一個方法存根。

  readint方法將使用一個默認的實現來生成。

    提示 為了生成一個方法存根,還可以右擊一個方法調用,并從彈出菜單中選擇“生成方法存根”。

  5. 將readint方法的主體替換成以下語句:

console.write(p);
string line = console.readline();
return int.parse(line);

   這個代碼塊和readdouble方法的非常相似。惟一的區別是方法返回一個int值,所以要使用int.parse方法將字符串轉換成整數。

  6. 右擊run方法中的calculatefee方法調用,選擇“生成方法存根”。

  隨后會生成calculatefee方法:

private object calculatefee(double dailyrate, int noofdays)
{
    throw new exception("the method or operation is not implemented");
}

  注意,“生成方法存根向導”使用傳入的實參名稱來生成形參名稱(當然,假如覺得不合適,完全可以更改形參名稱)。更讓人感興趣的是方法的返回類型,目前是object。這表明“生成方法存根向導”無法根據當前的上下文來確定方法應該返回什么類型的值。object類型只是意味著一樣“東西”,在方法中添加具體的代碼時,應該把它修改成自己需要的類型。

  7. 修改calculatefee方法的定義,使它返回一個double值:

private double calculatefee (double dailyrate, int noofdays)
{
    throw new exception("the method or operation is not implemented");
}

  8. 將calculatefee方法的主體替換成以下語句,它計算兩個參數值的乘積來獲得需要支付的金額,并返回結果。

return dailyrate * noofdays;

  9. 右擊run方法中的writefee方法調用,選擇“生成方法存根”。

  隨后會生成writefee方法。注意,“生成方法存根向導”根據calculatefee方法的定義判斷出writefee方法的參數應該是一個double參數。另外,方法調用沒有使用一個返回值,所以方法的類型為void:

private void writefee(double p)
{
    ...
}

  10. 在writefee方法內部輸入以下語句:

console.writeline("the consultant's fee is: {0}", p * 1.1);


    注意 這個版本的writeline方法演示了如何利用一個簡單的格式字符串。{0}是一個占位符;在求值的時候,它會被字符串之后的表達式(p * 1.1)的值替換掉。

  11. 選擇“生成”|“生成解決方案”。

    提示 如果對語法已經充分熟悉,也可以通過直接在“代碼和文本編輯器”窗口中輸入的方式來編寫方法。并非一定要使用“生成方法存根”選項。

  重構代碼

  visual studio 2005非常有用的一項特性就是對代碼進行重構。某些時候,我們需要在應用程序的多個位置寫相同的(或者非常相似的)代碼。在這種情況下,可以選定剛剛輸入的代碼塊,然后從菜單欄中選擇“重構”|“提取方法”。隨后會出現“提取方法”對話框,提示你輸入一個新方法的名稱,該方法將用于包含你剛才輸入的代碼。請輸入方法名,并單擊“確定”。隨后,系統將創建這個方法,并將你剛才輸入的代碼轉移到其中,剛才輸入的代碼則被替換成對該方法的一個調用。“提取方法”還具有一定的智能,可以判斷方法是否應該獲取任何參數和返回值。 

  測試程序

  1. 選擇“調試”|“開始執行(不調試)”,visual studio 2005將生成程序,并運行它。運行時會顯示一個控制臺窗口。

  2. 在enter your daily rate(輸入日費率)提示之后,請輸入525,然后按回車鍵。

  3. 在enter the number of days(輸入天數)提示之后,請輸入17,然后按回車鍵。

   程序會在控制臺上顯示以下消息:

the consultant’s fee is: 9817.5

  按回車鍵返回visual studio 2005編程環境。

  在最后一個練習中,將使用visual studio 2005調試器,以比較慢的步調來運行程序。你將看到每個方法被調用的時刻(這個行動稱為跳入),并看到每個return語句如何將控制返還給調用者(這個行動稱為跳出)。進入和離開方法時,都需要使用“調試”工具欄上的工具。然而,在調試模式中運行應用程序時,相同的命令也可從“調試”菜單中選擇。

  使用visual studio 2005調試器依次執行每個方法

  1. 在“代碼和文本編輯器”窗口中,找到run方法。

  2. 使鼠標指針對準run方法中的第一個語句。

  run方法的第一個語句是:
 
double dailyrate = readdouble("enter your daily rate: ");

  3. 右擊該行的任何地方,從彈出菜單中選擇“運行到光標處”。

  程序將開始運行,并在抵達run方法的第一個語句之后暫停。“代碼和文本編輯器”窗口左側的一個黃色箭頭指明了當前語句,該語句還會用一個黃色背景來突出顯示。

  4. 選擇“視圖”|“工具欄”,確定已經勾選了“調試”工具欄。“調試”工具欄也許會停靠在其他工具欄旁邊。如果找不到這個工具欄,可以試著使用“視圖”菜單中的“工具欄”命令暫時隱藏它,并留意哪些按鈕從界面上消失了。重新顯示這個工具欄,就可以知道它應該在什么位置出現。
 
  提示 要想將“調試”工具欄獨立出來,請使用工具欄左側的控點,把它拖放以“代碼和文本編輯器”窗口上方。

  5. 單擊“調試”工具欄上的“逐語句”按鈕。這個行動會使調試器跳入正在調用的方法。左側的黃色箭頭會指向readdouble方法的起始大括號。再次單擊“逐語句”按鈕,指針會轉向第一個語句:console.write(p);
 
  提示 按f11鍵的作用等同于單擊“調試”工具欄上的“逐語句”按鈕。

  6. 單擊“調試”工具欄上的“逐過程”按鈕。這會導致方法執行下一個語句而不調試它。黃色箭頭將指向方法的第二個語句,程序會在一個控制臺窗口中顯示“enter your daily rate”提示(控制臺窗口可能隱藏在visual studio 2005后面)。
 
  提示 按f10鍵的作用等同于單擊“調試”工具欄上的“逐過程”按鈕。

  7. 單擊“調試”工具欄上的“逐過程”按鈕。這一次,黃色箭頭會消失,控制臺窗口將獲得焦點,因為程序正在執行console.readline方法,要求用戶輸入一些內容。

  8. 在控制臺窗口中輸入525,按回車鍵繼續。

  隨后,控制將返回visual studio 2005。黃色箭頭將在方法的第三行出現。

  9. 不要做出任何單擊行動,請將鼠標指針移至方法第二行或第三行對line變量的引用上(具體對準哪一行無關緊要)。

  隨后會出現一條屏幕提示,它顯示了line變量的當前值(525)。利用這個特性,可以確定在逐方法執行的時候,變量已經設置成自己期望的一個值。

  10. 單擊“調試”工具欄上的“跳出”按鈕。

  這會導致當前方法繼續無中斷地運行,直到結束。當readdouble方法執行完畢之后,黃色箭頭會指回run方法的第一個語句。

    提示 按shift + f11鍵的作用等同于單擊“調試”工具欄上的“跳出”按鈕。

  11. 單擊“調試”工具欄上的“逐語句”按鈕。

  黃色箭頭會移至run方法的第二個語句:

int noofdays = readint("enter the number of days: ");

  12. 單擊“調試”工具欄上的“逐過程”按鈕。

  這一次,選擇了直接運行方法,而不逐語句地調試該方法。控制臺窗口將再次出現,提示輸入一個天數。

  13. 在控制臺窗口中輸入17,按回車鍵繼續。

  控制將返回至visual studio 2005。黃色箭頭將移至run方法的第三個語句:

writefee(calculatefee(dailyrate, noofdays));

  14. 單擊“調試”工具欄上的“逐語句”按鈕。

  黃色箭頭將跳至calculatefee方法的起始大括號處。該方法將先于writefee方法被調用。

  15. 單擊“調試”工具欄上的“跳出”按鈕。

  黃色箭頭將跳回run方法的第三個語句。

  16. 單擊“調試”工具欄上的“逐語句”按鈕。

  這一次,黃色箭頭將跳至writefee方法的起始大括號處。

  17. 讓鼠標指針對準方法定義中的p變量。

  隨后將顯示p的值(8925.0)。

  18. 單擊“調試”工具欄上的“跳出”按鈕。

  隨后會在控制臺窗口中顯示消息“the consultant’s fee is: 9817.5”(如果控制臺窗口隱藏在visual studio 2005之后,請把它帶到前臺來顯示)。黃色箭頭將返回run方法的第三個語句。

  19. 單擊“調試”工具欄上的“繼續”按鈕,使程序連續運行,而不在每個語句處暫停。

  應用程序將一直運行至結束。

    提示 還可以按f5鍵在調試器中繼續執行。

  恭喜!你已經成功編寫并調用了方法,并利用visual studio 2005調試器對它們進行了調試。

國內最大的酷站演示中心!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潮安县| 安顺市| 新余市| 青川县| 南平市| 武穴市| 武乡县| 安康市| 民勤县| 绥棱县| 九寨沟县| 阿拉善左旗| 汨罗市| 萍乡市| 云南省| 合江县| 茌平县| 镇江市| 安新县| 根河市| 吉安县| 宝坻区| 右玉县| 邢台县| 花莲县| 紫金县| 宜城市| 鄯善县| 新津县| 绥德县| 彰武县| 东港市| 平遥县| 清苑县| 石柱| 吴旗县| 清水县| 平和县| 平昌县| 镇巴县| 乡宁县|