2012-10-20 48 views
1

好吧,讓我來解釋一下:;在用戶類定義或MyProj.MyClass在特定的方法?

每當你開始在.net中的一類,讓我們說你有你開發引用另一個項目,具有非靜態類(ES),你需要使用...

你有2個選項(據我所知)

放置一個使用你的類的頂部意味着你不需要在每次需要它的類

using FooBarProj; 

public FooBar MyMethod() 
{ 
    FooBar fb = new FooBar(); 
    //Do stuff 
    return fb; 
} 

或時間來明確命名整個項目明確地執行tho SE:

public FooBarProj.FooBar MyMethod() 
{ 
    FooBarProj.FooBar fb = new FooBarProj.FooBar(); 
    //Do stuff 
    return fb; 
} 

這是否形成有效的差異呢?無論是執行效率,編譯,無論什麼?或者它只是一個開發便利問題?

回答

1

編譯代碼後沒有什麼區別。

要麼使用using語句,要麼使用整個類名稱空間和名稱,畢竟是同樣的事情。

編譯爲CIL代碼時,對類型的引用是一件事情,每個引用都包含所有信息,而不管您如何編寫該引用。

引用一類用不同的名稱

你甚至可以重命名類,如果你whant,這樣做:

using TheString = System.String; 

現在,你可以參考System.String使用名稱TheString在你的代碼。

所有這些產生相同的編譯代碼

  • string
  • System.String
  • String(如果你把using System;開頭)
  • TheString如果你把using TheString = System.String;開頭( )

結論:所有using聲明只是方便。

+0

在一個接口上,當它被請求實現它時(隱式或顯式),你有兩個選項,它和這裏是一樣的嗎?方便? – apacay

+1

這是不同的。一個顯式的實現接口將不會按通常的方式調用。當你想調用一個對象的顯式實現接口時,你首先必須將它轉換爲接口。 – SomebodyYouKnow

+0

在這種情況下不是。隱式實現將要求方法是公共的......顯式實現不會公開方法,只能通過接口公開。 –

0

我認爲這是一個dev方便的問題。除了在不同名稱空間中存在類似的類名之外,所有情況下的第一個版本都更好。如果在不同的名稱空間中存在相同的類名稱,則需要在類之前的顯式名稱空間聲明。 Dog23.class1和dog45.class1。總是第一個版本,如果它的工作。它更短,更易讀。