gpt4 book ai didi

C# 在其他使用别名的情况下使用别名作为类型参数

转载 作者:太空狗 更新时间:2023-10-30 00:10:05 27 4
gpt4 key购买 nike

我试图在我的 C# 程序的顶部定义一对类型别名。这是我正在尝试做的一个简短示例:

using System;
using System.Collections.Generic;

namespace Foo {
using TsvEntry = Dictionary<string, string>;
using Tsv = List<TsvEntry>;
}

当我尝试使用 mcs 3.2.8.0 编译它时,我收到以下错误消息:

foo.cs(6,19): error CS0246: The type or namespace name `TsvEntry' could not be found. Are you missing an assembly reference?

是否可以在 C# 中的其他别名中使用 using 别名,或者我是否遗漏了一些关于 using 语句工作方式的信息?

最佳答案

检查这个问题的文档:

https://msdn.microsoft.com/en-us/library/aa664765(v=vs.71).aspx

它说:

The order in which using-alias-directives are written has no significance, and resolution of the namespace-or-type-name referenced by a using-alias-directive is not affected by the using-alias-directive itself or by other using-directives in the immediately containing compilation unit or namespace body. In other words, the namespace-or-type-name of a using-alias-directive is resolved as if the immediately containing compilation unit or namespace body had no using-directives. In the example

namespace N1.N2 {}
namespace N3
{
using R1 = N1; // OK
using R2 = N1.N2; // OK
using R3 = R1.N2; // Error, R1 unknown
}

the last using-alias-directive results in a compile-time error because it is not affected by the first using-alias-directive.

从技术上讲,您不能在同一个命名空间中执行此操作,但如果您在命名空间 1 中执行别名,并在嵌套命名空间中为该别名执行别名,它将起作用:

namespace N1
{
namespace N12 { }
}

namespace N2
{
using R1 = N1;

namespace N2
{
using R2 = R1.N12;
}
}

我不太确定在您的特定示例中是否值得使用别名,请考虑尽可能少地使用它们,主要是为了解决命名空间冲突。

关于C# 在其他使用别名的情况下使用别名作为类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35921803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com