【发布时间】:2020-12-31 03:07:49
【问题描述】:
为什么这不能在 Unity 2018 C# 中编译?
namespace MyNS
{
using FooTable = Dictionary<int, float[]>;
using BarTable = Dictionary<int, FooTable>;
}
同样,如果我省略命名空间:
using FooTable = System.Collections.Generic.Dictionary<int, float[]>;
using BarTable = System.Collections.Generic.Dictionary<int, FooTable>;
我得到同样的编译器错误。
(坦率地说,我不知道为什么 Dictionary 限定符在命名空间内是可选的,但在外部是强制性的!)
编译器错误是针对using BarTable... 行中的最后一个符号:“无法解析符号FooTable”。
这种方式不能嵌套类型别名吗?
【问题讨论】:
-
"我不知道为什么 Dictionary 限定符在命名空间内是可选的,但在外部是强制性的" - 因为 inside
namespace语句编译器至少知道“外部”命名空间被导入,而“外部”则没有。 -
@Dai 啊,如果我在同一个文件中声明两个命名空间会怎样?两个命名空间会获得相同的一组导入命名空间吗?让我想知道为什么顶级
using声明不是 inside 命名空间虽然... -
正确,您可以在同一个
*.cs文件中拥有多个namespace块 - 是的,它们都将“继承”相同的导入“外部”命名空间,但它们不共享“内部”导入的命名空间。
标签: c# unity3d using type-alias