为什么将数组声明为常量时推断不起作用



此代码未通过

Const BASEARRAY = {"BTC", "ETH", "BNB", "USDT", "PAX", "USDC", "XRP", "USDS", "TRX", "TRY", "BUSD", "NGN", "RUB", "EUR"}

将CONST更改为私有共享也不起作用。

Private Shared BASEARRAY As String() = {"BTC", "ETH", "BNB", "USDT", "PAX", "USDC", "XRP", "USDS", "TRX", "TRY", "BUSD", "NGN", "RUB", "EUR"}

不过效果不错。

Private Shared BASEARRAY = {"BTC", "ETH", "BNB", "USDT", "PAX", "USDC", "XRP", "USDS", "TRX", "TRY", "BUSD", "NGN", "RUB", "EUR"}

我只需要添加as String((并将const更改为private shared。

但为什么会失败呢?我想要一个常量数组作为我的常量。我不打算更改它。const似乎是正确的关键字。为什么失败?为什么推断不起作用呢。为什么我必须添加字符串((

常量不允许是泛型类型或数组类型。这里有一些相关文档。

通过声明。。。

Const BASEARRAY = {"BTC", "ETH", ...}

您正试图将Object类型的数组实例化为常量,这是不允许的。

因此,为了回答您的问题,就是这样设计的

如果您无意更改BASEARRAY变量,只需将其设置为ReadOnly,它是为此类情况而设计的。

如果省略类型(如中,省略As String()(会导致错误,那是因为您可能有Option Strict On。这里有一些专门针对该错误的文档,还有一些关于Option Strict的内容。

不声明类型会使类型隐式,而Option Strict On(没有Option Infer On(不允许这样做。如果保留Option Strict,你可以说。。。

Private Shared ReadOnly BASEARRAY As String() = {"BTC", "ETH", "BNB"}

不过要小心。设置此ReadOnly可以防止将另一个数组分配给它,但它确实允许操作其一个或多个数组成员。

如果这种保护级别对您来说还不够,请查看此问题关于真正只读阵列的答案。

相关内容

最新更新