我正在为一群人使用 C# 编码,我正在设计要编码的方法的签名,我需要一种方法来确保人们不会修改他们将收到的某些参数。 他们接收大结构,因此通过引用发送,但我希望他们在不修改原始值的情况下使用数据。但由于结构很大,我们不想复制它们。
我们可以假设他们不想更改数据,我们只需要保护他们不犯错误。
C# 提供了哪些解决方案?
这是一个例子
class MyDataBlok {
List<double> samples;
int someParams;
double lots of other params
}
class MySetOfDataBlock
{
List<MyDataBlock> DataSet;
bool SomeParam;
Double lots of other params;
}
class MethodsToBeCoded
{
ProcessSetOfData( /*some tag defining data as protected*/ MySetOfDataBlock data)
{
//Here I want code that uses data without modifying data
// nor the content on any data.DataSet[i]
}
}
最佳答案
悲观的答案是无。如果他们想要更改数据,他们会。除了复印,您无能为力。
乐观的答案是假设他们不想更改数据,而您只需要保护他们免于犯错。现在这是可能的:
不要给他们任何二传手。你没有说你的数据是什么样的,所以我只能给你一个模糊的描述:
不要暴露二传手。为它们提供没有 setter 的数据类接口(interface),返回集合为 IEnumerable<>
而不是可修改的实例,等等。确保通过他们获取您的数据的接口(interface),您的数据不能被修改。
关于c# - 我可以阻止用户修改C#中的参数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870297/