2017-06-27 70 views
4
using IdType = System.Guid; 
using RowType = System.Tuple<System.Guid, object> 

的作品。 而在C#中更名類型的類型

using IdType = System.Guid; 
using RowType = System.Tuple<IdType, object> 

不編譯。
在第一行聲明的IdType不能與進一步using似乎一起使用。

有沒有辦法解決這個問題?

+7

爲什麼你要這麼做呢?似乎是一種混淆代碼的好方法! – DavidG

+3

@DavidG在這條路上,我認爲用於ID的類型可能會改變。 –

+0

@DavidG我的代碼看起來不像System.Tuple ,object []>'。我試圖擺脫它,我的例子被簡化了。 – LosManos

回答

11

這將工作:

using IdType = System.Guid; 
namespace x 
{ 
    using RowType = System.Tuple<IdType, object>; 
} 

的原因是類型別名只在內部包含它們的命名空間聲明中適用。

0
using IdType = System.Guid; 
using RowType = System.Tuple<System.Guid, object>; 

namespace WindowsFormsApplication1 
{ 
public void Test() 
{ 
    var guideq = typeof(IdType).Equals(typeof(System.Guid)); 
    var typeeq=typeof(RowType).Equals(typeof(System.Tuple<System.Guid, 
    object>)); 
    System.Tuple<System.Guid, object> obj = new RowType(IdType.NewGuid(), ""); 
} 

IdType and System.Guid是相同類型。

System.Tuple<System.Guid, object>RowType屬於同一類型。在這個 的情況下,它只是作爲一個別名工作。所以我們需要使用任何地方。

在代碼中我檢查這兩種類型的等價性,它是真的;因爲它是相同類型的別名。

此類型重命名(或)類型別名有助於編碼, 可以理解並避免混淆。特別是當類型越來越複雜時。

+1

大寫字母應該謹慎使用 - 一般在句子的開頭和專有名詞。不是每個單詞(或每隔一個單詞) –