相关疑难解决方法(0)

声明一个const数组

是否可以写出类似以下的内容?

public const string[] Titles = { "German", "Spanish", "Corrects", "Wrongs" };
Run Code Online (Sandbox Code Playgroud)

.net c# arrays const readonly

421
推荐指数
12
解决办法
35万
查看次数

将二维整数存储为独立类中的Readonly/const,同时保持不暴露

这是我用这个地方作为我的"去"以获得关于什么有效/无效/为什么等的一般意见的第一个问题.那么让我们试试吧......

凭借我有限的经验,我一直试图找到更好的创建固定数据字段的方法,我可以在整个程序中参考这些字段 - 例如我反复显示的最终用户可查看的字符串以及其他参数.我希望保持不变并保持安全.我将我重用的数据保存在单独的静态类中,并将我的字符串放在我private static readonly通过私有包装公开的数组中,ILists这些包含公共getter,它返回我追求的单个字符串.希望到目前为止我还没有滥用术语!到目前为止我做了什么:

namespace MyNamespace
{
    public static partial class Tables
    {
          private static readonly string[] _Messages =
                  {
                      "One",
                      "Two"
                  };

          private static readonly IList<string> MessagesReadOnly = Array.AsReadOnly(_Messages);
          public static IList<string> Messages { get { return MessagesReadOnly; } }
    }
}
Run Code Online (Sandbox Code Playgroud)

我理解的很多,但现在我有一个二维数据表(int),我需要以一种我可以访问的类似非暴露的方式存储.
这个数据正在进入它自己的类,因为现在我正在处理一个单独的真实数据类型.实际情况 - 我有不同的燃料及其相关的燃烧常数,我需要使用我从气体分析仪获得的数据进行燃烧分析.所以我想保持这些数组/列表与他们所有的方法分开,但我似乎无法弄清楚如何做到这一点.

如果我喜欢我之前做过并通过数组路径(但这次是2D),那么我遇到的问题似乎(根据MSDN上的信息)Array.AsReadOnly(myArray)只适用于一维数组.我不够精明,不知道如何编写我自己的解决方案(假设这是一个足够简单的任务).那么如果我去尝试使用锯齿状数组,因为这似乎是我发现的另一条可行路径,我会陷入困境,试图弄清楚如何以及在何处创建初始锯齿状数组(构造函数或类方法)和那么在那里初始化数组呢?

如果我不需要保护数组,那么我可以将它全部放在构造函数中,这可能没问题(据我所知,到目前为止)但我必须保持它不暴露.第一种方式我理解程序化如何适应类,但试图使用非暴露的锯齿状数组让我陷入困境.我在网上看到的所有例子似乎都是创建它们并初始化main其中很好(虽然暴露)但是当我把它放在其他地方时,如何让它可用于任何可能需要数据而不暴露它们的东西?

希望你理解为什么我觉得我要进入圈子,也许答案非常简单,我错过了显而易见的但是直到我看到其他人做类似的事情,我无法弄明白,我也无法理解找到足够接近的东西来给我提供线索.如果在SO上已经存在类似的帖子,请指出我的方向.就像我说的那样,我已经搜索了MSDN,SO并在网上搜索面包屑.

如果您需要更多关于我一直在努力的信息并感谢阅读,请告诉我.

我刚刚在这个问题上添加了标签,看到有一个数据标签,所以我想知道我是否可以在那里缩小范围.不确定我是否应该添加该标签,我还可以添加列表......?

c# .net-4.0

3
推荐指数
1
解决办法
621
查看次数

如何在C#中获得C++的"const"等价物?

在C++中,如果我想在编译时初始化一个对象并且之后永远不会改变,我只需添加前缀const.

在C#中,我写道

    // file extensions of interest
    private const List<string> _ExtensionsOfInterest = new List<string>()
    {
        ".doc", ".docx", ".pdf", ".png", ".jpg"
    };
Run Code Online (Sandbox Code Playgroud)

并得到错误

除string之外的引用类型的const字段只能用null初始化

然后我研究了Stack Overflow上的错误,并提出了"解决方案" ReadOnlyCollection<T>.除字符串之外的引用类型的const字段只能使用null Error初始化

但这并没有真正给我我想要的行为,因为

    // file extensions of interest
    private static ReadOnlyCollection<string> _ExtensionsOfInterest = new ReadOnlyCollection<string>()
    {
        ".doc", ".docx", ".pdf", ".png", ".jpg"
    };
Run Code Online (Sandbox Code Playgroud)

仍然可以重新分配.

那么我该怎样做我想做的事情呢?

(令人惊讶的是,除了我想要的语言之外,C#还具有所有语言功能的可模仿性.

c#

3
推荐指数
1
解决办法
269
查看次数

标签 统计

c# ×3

.net ×1

.net-4.0 ×1

arrays ×1

const ×1

readonly ×1