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

首頁 > 學院 > 開發設計 > 正文

C#提取方法重構

2019-11-14 13:29:54
字體:
來源:轉載
供稿:網友

引用:https://msdn.microsoft.com/zh-CN/library/0s21cwxk.aspx

“提取方法”是一項重構操作,提供了一種從現有成員中的代碼段創建新方法的便捷方式。

使用“提取方法”,可以通過從現有成員的代碼塊中提取一組代碼來創建新方法。提取出的新方法包含所選代碼,而現有成員中的所選代碼被替換為對新方法的調用。 通過將代碼段變為其自己的方法,可以快速而準確地重新組織代碼,以獲得更好的重用性和可靠性。

“提取方法”有以下優點:

  • 通過強調離散的可重用方法鼓勵最佳的編碼做法。

  • 鼓勵通過較好的組織獲得自記錄代碼。

    當使用描述性名稱時,高級別方法可以像讀取一系列注釋一樣進行讀取。

  • 鼓勵創建細化方法,以簡化重載。

  • 減少代碼重復。

1、創建名為 ExtractMethod 的控制臺應用程序,然后使用以下代碼示例替換 PRogram。

class A{    const double PI = 3.141592;    double CalculatePaintNeeded(double paintPerUnit, double radius)    {        // Select any of the following:        // 1. The entire next line of code.        // 2. The right-hand side of the next line of code.        // 3. Just "PI *" of the right-hand side of the next line        //    of code (to see the prompt for selection expansion).        // 4.  All code within the method body.        // ...Then invoke Extract Method.        double area = PI * radius * radius;        return area / paintPerUnit;    }}

2、選擇您要提取的代碼片段:

double area = PI * radius * radius;

3、在“重構”菜單上,單擊“提取方法”

出現“提取方法”對話框。

也可以鍵入鍵盤快捷鍵 Ctrl+R、Ctrl+M 來顯示“提取方法”對話框。

還可以右擊選定代碼,指向“重構”,然后單擊“提取方法”來顯示“提取方法”對話框。

4、在“新方法名稱”框中指定新方法的名稱,如 CircleArea

新方法簽名的預覽顯示在“預覽方法簽名”下。

5、單擊“確定”

備注:

使用“提取方法”命令時,將在同一個類中的源成員之后插入新方法。

分部類型

如果類是分部類型,則“提取方法”將緊跟源成員之后生成新方法。 “提取方法”確定新方法的簽名,并在新方法中的代碼不引用實例數據時創建靜態方法。

泛型類型參數

當提取的方法具有不受約束的泛型類型參數時,除非已為該參數賦值,否則生成的代碼將不向該參數添加 ref 修飾符。 如果提取的方法將支持引用類型作為泛型類型實參,則應該向方法簽名中的形參手動添加 ref 修飾符。

匿名方法

如果嘗試提取匿名方法(該方法包括對在匿名方法之外聲明或引用的局部變量的引用)的一部分,則 Visual Studio 將警告您可能有語義更改。

當匿名方法使用局部變量的值時,將在執行匿名方法時獲取該值。 將匿名方法提取到其他方法中時,將在調用提取方法時獲取局部變量的值。

下面的示例闡釋這一語義更改。 如果執行此代碼,則將向控制臺輸出 11。 如果使用“提取方法”將代碼注釋所標記的代碼區域提取到其自己的方法中,然后執行重構后的代碼,則將向控制臺輸出 10

class Program{    delegate void D();    D d;    static void Main(string[] args)    {        Program p = new Program();        int i = 10;        /*begin extraction*/            p.d = delegate { Console.WriteLine(i++); };        /*end extraction*/        i++;        p.d();    }}

若要解決此問題,請使匿名方法中使用的局部變量成為類的字段。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢氏县| 巴东县| 饶平县| 简阳市| 霍邱县| 诏安县| 调兵山市| 金寨县| 土默特右旗| 缙云县| 双桥区| 聂拉木县| 安义县| 郎溪县| 峡江县| 二连浩特市| 凤庆县| 沽源县| 吴桥县| 原平市| 山东| 南雄市| 龙岩市| 灵丘县| 丹棱县| 牟定县| 玛多县| 望谟县| 武宣县| 岳普湖县| 仪陇县| 中山市| 栾川县| 禄丰县| 云阳县| 郓城县| 汶上县| 文山县| 子洲县| 宝坻区| 含山县|