【发布时间】:2021-03-25 18:23:29
【问题描述】:
导入引入命名空间 Math.Native.Gmp 的包/库时遇到问题(在 NuGet 上称为“Math.Gmp.Native”)。
在导入之前,这段代码运行良好:
using System;
namespace Sample
{
public int Foo()
{
return Math.Min(1, 2);
}
}
然而,在添加此引用后,Math 不再被识别为 System.Math,而是被新添加的命名空间隐藏 - Math. 只期望 Math.Native 作为路径的正确扩展名。
尝试使用Math.Min 会导致编译器错误:
[CS0234] 命名空间“Math”中不存在类型或命名空间名称“Min”(您是否缺少程序集引用?)
我发现原来的Math 仍然可以通过System.Math 访问,所以在上面的例子中,在添加这个前缀(return System.Math.Min(1, 2);)之后,一切都按预期工作。这是一些绕路
我的问题是 - 如何避免 Math 的阴影?我可以在文件开头使用一些using 命令来避免它吗?我可以为Math.Native.Gmp 命名空间创建一些别名,这样它就不会与System.Math 冲突?
【问题讨论】:
-
using System.Math;也许? -
你可以试试
using MathNativeGmp = Math.Native.Gmp; -
@AKX Math 是一种类型,因此只有
using static System.Math;可以编译。这是另一种解决方法 - 只需编写<xyz>即可访问Math.<xyz> -
@WombleNumber1 它创建了额外的别名,但保持
Math.<xyz>不变 - 使用Math.Min时出现 CS0234 错误 -
实际上@Quilir 我现在参考您正在谈论的库再次更新了它,我认为最好的解决方案是 Markus Safar 在下面给出的答案。实际上,由于 Math.Gmp.Native 的基本命名空间的不幸命名 - dotnetfiddle.net/XDPnqH,最好为“System.Math”做别名而不是相反
标签: c# .net nuget csproj .net-5