2011-02-15 67 views
5

是否可以爲現有類型創建別名並在項目中使用該別名?在.NET中別名

例如,創建

CustomerID = System.UInt32 

,並使用客戶ID爲數據類型?

版本:.NET Framework 4.0中

(與「使用」的關鍵字,我們將能夠創建一個別名,但它不工作在不同的文件是沒有用的。)

任何其他想法?

+1

你在命名空間中使用'using`關鍵字的原因是因爲創建一個全局`using`是一個非常糟糕的主意。設想一下其他人在不同的上下文中使用「CustomerID」類型,並返回一個無符號整數,而不是他們期望的類型。通過將其限制爲只有一個名稱空間,可以防止發生這種類型的衝突。 – 2011-02-15 20:22:06

回答

4

我認爲正確的答案,這個問題是:

不,那是不可能的(可惜?)。 :(


編輯1:但是,你可以(種)製作自己struct,以及你想要的類型/提供隱式轉換模擬這個它不完全不可思議,但它。可能工作,根據具體情況


編輯2:我沒有以前曾經用過這個功能,但type forwarding可能是有幫助的,只轉發到另一個整個組件,雖然如此,我t可能不適用於簡單情況。

+0

認爲結構/記錄是一種解決方法,有沒有更聰明的想法? – Pavan 2011-02-15 20:31:07

+0

我覺得它很漂亮。 – JimDaniel 2011-02-15 21:35:51

0

這似乎不可能。但是,你想這樣做的原因是什麼?

如果你的原因是可讀性,考慮以下因素:

您已經可以使用標識符來表明它是如一個customerID。當您嘗試將UInt32重命名爲CustomerID時,您實際上正在做的是使它看起來像一個新類型。只有當一個類型需要額外的行爲或值時,將其視爲「新」類型纔是有用的。如果您曾經用C++開發過,那麼您可以欣賞約定,這是由於在C#中不允許導致的。你知道什麼期望從UInt32

如果你的原因是準備自己更改

例如假設你在一段時間後決定你也想支持負號。這應該通過將這種可能的預期行爲封裝在一個新類型中來解決。所以不需要重命名。