.net - 错误 C3224 : 'System::Nullable' : no overloaded generic class takes '1' generic type arguments

标签 .net c++-cli nullable

我正在尝试使用Nullable<bool>作为 C++/CLI 中的 tribool(在 C# 中视为 bool?)。我从以下函数声明中收到这个奇怪的错误消息:

static IList<Modification^>^ modifications(double mass,
                                           double tolerance,
                                           Nullable<bool> monoisotopic,
                                           Nullable<bool> approved,
                                           Site site,
                                           Position position,
                                           Classification classification,
                                           Nullable<bool> hidden);

我有正确的 using 语句将类型纳入范围。每次使用 Nullable 都会发生错误:

error C3224: 'System::Nullable' : no overloaded generic class takes '1' generic type arguments

我也尝试过Nullable<System::Boolean>但得到同样的错误。如果我使用完全限定名称 System::Nullable ,错误就会消失...但为什么?!

最佳答案

有两个不同的 System::Nullable -- a non-generic onea generic one 。当您真正想要使用后者时,您的 using 声明将前者纳入范围。

不幸的是,C++/CLI 的一个限制是,当存在另一个同名的非泛型类型时,无法使用 using 声明将泛型类型引入作用域。这里唯一真正的选择是完全限定类型名称或使用 using 指令而不是 using 声明(即 using namespace System;)。

关于.net - 错误 C3224 : 'System::Nullable' : no overloaded generic class takes '1' generic type arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042178/

相关文章:

c# - 运算符 '!' 不能应用于 x 类型的操作数

.net - 同步.net 4中的多个线程

winforms - 如何使用 C++/CLI 编写 Winforms 应用程序

kotlin - 如何处理不为null的可为空的变量?

c# - 为什么不能将可空值声明为 const?

c# - 遍历具有可为空类型的 Enumerable 集合

c# - 我们可以通过c#代码调用Azure API Management而不使用SAS Token吗

c# - 滚动IOS时透明状态栏显示webview内容

c# - 从托管 C++/CLI 使用 C# 扩展方法

c# - 如何从 native C++ 调用 C# 库(使用 C++\CLI 和 IJW)