2017-06-27 26 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

大写字母应该谨慎使用 - 一般在句子的开头和专有名词。不是每个单词(或每隔一个单词) –