c# – WinRT组件库中的公共常量

c# – WinRT组件库中的公共常量,第1张

概述我创建了一个C# Windows运行时组件,并且以下行: public const bool LOG_ENABLED = false; 抛出错误: 类型’常量’包含外部可见的常量字段’Constants.LOG_ENABLED’.常量只能出现在Windows运行时枚举中 这个错误是什么意思?我怎样才能声明常量? 这是一个古老的问题,但我会给予我的两分钱. const和public是一个危险的组合, 我创建了一个C# Windows运行时组件,并且以下行:
public const bool LOG_ENABLED = false;

抛出错误:

类型’常量’包含外部可见的常量字段’Constants.LOG_ENABLED’.常量只能出现在windows运行时枚举中

这个错误是什么意思?我怎样才能声明常量?

解决方法@H_403_12@ 这是一个古老的问题,但我会给予我的两分钱. const和public是一个危险的组合,经常错过使用.这是因为如果在库中更改了公共const字段,则不能仅替换库,而是需要重建该库的所有客户端,因为它将复制客户端中的实际值而不是参考到那个价值.

如果你真的想要一个公共的“常数”,一种选择是做这样的事情:

public static class Constants{       public static Readonly bool LOG_ENABLED = false;}

但是,WinRT组件库中也会失败

‘windowsRuntimeComponent1.Constants’ contains externally visible fIEld
‘System.Boolean windowsRuntimeComponent1.Constants.LOG_ENABLED’.
FIElds can be exposed only by structures.

确实有效的另一种选择是

public static class Constants{    public static bool LOG_ENABLED { get { return false; } }}

我不确定为什么在WinRT组件库中不可能有公共const或Readonly,因为它可以在普通的类库中.

经过一些阅读后,似乎公共领域仅限于结构,结构可能只包含公共领域.

就像你在评论中所说的那样,如果不从外部源使用它,将其更改为内部是一个不错的选择.

总结

以上是内存溢出为你收集整理的c# – WinRT组件库中的公共常量全部内容,希望文章能够帮你解决c# – WinRT组件库中的公共常量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存