C#特殊的技巧(C#)

1.重構

代碼需做到簡潔,那麼就需要將相關的一組語句轉移,而不要把它放到一個大的方法中從而形成一個臃腫的方法塊,

後期維護也會增加負擔。這個時候我們自然而然做的事情就是重構。

在VS中,選定要轉移的語句,右擊彈出菜單選擇“快速操作”,當然你也可以直接快捷鍵Ctrl+.即可


2.Using指令的自由性

Using可以是來引用命名空間的,然而我們是否就這樣思維定勢地認爲Using引用命名空間語句只能在文件的開頭聲

明,當然這種是最實惠和正規的,那麼就會想到是否可以將Using指令放在命名空間聲明頂部呢?注意以下代碼:

using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Shapes;

// “空白頁”項模板在 http://go.microsoft.com/fwlink/?LinkId=234238 上提供

namespace Hodgepodge
{
    /// <summary>
    /// 可用於自身或導航至 Frame 內部的空白頁。
    /// </summary>
    public sealed partial class BlankPage1 : Page
    {
        public BlankPage1()
        {
            this.InitializeComponent();

            Frame frame = Window.Current.Content as Frame;

            Rectangle rect = new Rectangle() { Fill = new SolidColorBrush(Colors.Red) };
        }
    }
}

Rectangle是聲明在using Windows.UI.Xaml.Shapes中的,當然以上代碼using Windows.UI.Xaml.Shapes;放在文件頂
部沒有問題。那麼將using Windows.UI.Xaml.Shapes;放到項目命名空間namespace Hodgepodge頂部呢?
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;


// “空白頁”項模板在 http://go.microsoft.com/fwlink/?LinkId=234238 上提供

namespace Hodgepodge
{
    using Windows.UI.Xaml.Shapes;
    /// <summary>
    /// 可用於自身或導航至 Frame 內部的空白頁。
    /// </summary>
    public sealed partial class BlankPage1 : Page
    {
        public BlankPage1()
        {

            this.InitializeComponent();

            Frame frame = Window.Current.Content as Frame;

            Rectangle rect = new Rectangle() { Fill = new SolidColorBrush(Colors.Red) };
        }
    }
}

你看代碼沒有報錯,當然不推薦這種寫法,增加代碼閱讀難度,還有可能會出現重複的現象(但並沒有錯)

上面爲什麼截圖呢,注意兩點:
一個是注意我寫了兩次using Windows.UI.Xaml.Shapes的聲明,但代碼並沒有報錯。
二相比之下可以發現,越靠近具體對象的聲明是被有效的,而越遠的聲明反而灰掉了。這就說明在不同的地方的Using指令有它自己的命名空間有效性。

3.同名類型採用Using指令爲命名空間取別名,以消除歧義
這種情況很容易出現,例如A命名空間裏有一個Person類型,B命名空間裏也有一個Person類型。這個時候你使用了Person類,那麼編譯器會很疑惑你到底用的哪個命名空間下的Person定義。
當然解決方法還是有的:
你可以在Person前寫全它的完全限定名,如A.Person person;
或者你可以給A,B命名空間分別給一個別名,如下:
using GoodPeople = A.Person;
using BadPeople = B.Person;
......
GoodPeople person;
或者BadPeople person;
這樣編譯器就知道你的person是具體哪種類型的Person了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章