gpt4 book ai didi

c# - 将二维整数作为只读/常量存储在单独的类中,同时保持不公开

转载 作者:行者123 更新时间:2023-11-30 15:08:51 24 4
gpt4 key购买 nike

这是我使用这个地方作为我的“去处”后的第一个问题,以了解关于什么有效/无效/为什么等的一般意见。那么让我们来试试这个......

凭借我有限的经验,我一直在努力寻找更好的方法来创建我可以在整个程序中引用的固定数据字段——比如我反复显示的最终用户可见的字符串和其他参数我想保持不变并避免变化。我将重复使用的数据保存在单独的静态类中,并将我的字符串放在 private static readonly 数组中,我通过在具有公共(public) getter 的私有(private) ILists 中使用包装来公开这些数组返回我之后的单个字符串。希望到目前为止我没有滥用术语!到目前为止我做了什么:

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; } }
}
}

我明白了这么多,但现在我有一个二维数据表 (int),我需要以我可以访问的类似非公开方式存储它。
该数据将进入其自己的类,因为现在我正在处理一个单独的真实世界数据类型。真实场景——我有不同的燃料及其相关的燃烧常数,我需要访问这些燃料才能使用从气体分析仪获得的数据进行燃烧分析。所以我想将这些数组/列表与它们的所有方法分开,但我似乎无法弄清楚如何做到这一点。

如果我像以前一样通过数组路径(但这次是 2D),那么我遇到的问题是(根据 MSDN 上的信息)Array.AsReadOnly(myArray) 仅适用于一维数组。我不够精明,无法确切地知道如何编写自己的代码来解决这个问题(假设这是一项足够简单的任务)。因此,如果我尝试使用 jagged 数组,因为这似乎是我发现的另一条可行途径,我会陷入困境,试图弄清楚如何以及在何处创建初始的锯齿状数组(构造函数或作为类方法),然后在其中初始化数组的位置呢?

如果我不需要保护数组,那么我可以将它全部放在构造函数中,这可能没问题(据我所知),但我必须保持它不暴露。我理解的第一种方式是如何以编程方式适应类,但尝试使用非公开的锯齿状数组让我一头雾水。我在网上看到的所有示例似乎都是在 main 中创建并初始化的,这很好(虽然暴露了)但是当我把它放在其他地方时,我怎样才能让它可用于任何可能需要数据而不暴露它们?

希望你能理解为什么我觉得自己在兜圈子,也许答案真的很简单,我错过了显而易见的,但直到我看到其他人做类似的事情,我才弄明白,而且我还没有无法找到任何足够接近的东西来给我线索。如果在 SO 上已经存在类似的帖子,请指出我的方向。就像我说过的,我已经搜索了 MSDN、SO 并在网上漫游以寻找面包屑。

如果您需要有关我一直在尝试的内容的更多信息,请告诉我,感谢阅读。

我刚刚为这个问题添加了标签,发现有一个数组标签,所以我想看看是否可以进一步缩小范围。不确定我是否也应该添加该标签,我也可以添加列表...?

最佳答案

This data is going into its own class as now I'm dealing with a separate real-world data t

如果您要将其存储在自定义类中,您可以只编写 custom read-only indexer property对于那个类。

这看起来像:

private YourType[,] internalArray; // Create and set this up in constructor or elsewhere...


public YourType this[int row, int column]
{
get
{
return internalArray[row,column];
}
{

关于c# - 将二维整数作为只读/常量存储在单独的类中,同时保持不公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com