Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保持类状态有效与性能_C#_Oop_Concept - Fatal编程技术网

C# 保持类状态有效与性能

C# 保持类状态有效与性能,c#,oop,concept,C#,Oop,Concept,如果我有一个公共方法返回一个引用类型值,它是当前类中的私有字段,那么我需要返回它的副本吗?在我的例子中,我需要返回List,但是这个方法经常被调用,并且我的List包含大约100个项目。关键是,如果我返回相同的变量,每个人都可以修改它,但是如果我返回一个副本,性能会下降。在我的例子中,我试图生成数独表,这不是一个快速的过程。 内部类SudokuTable保存这些值及其可能的值。公共类SudokuGame处理UI请求并生成/解决SudokuTable。选择性能而不是OOP原则是一种好的实践吗?如果

如果我有一个公共方法返回一个引用类型值,它是当前类中的私有字段,那么我需要返回它的副本吗?在我的例子中,我需要返回List,但是这个方法经常被调用,并且我的List包含大约100个项目。关键是,如果我返回相同的变量,每个人都可以修改它,但是如果我返回一个副本,性能会下降。在我的例子中,我试图生成数独表,这不是一个快速的过程。
内部类SudokuTable保存这些值及其可能的值。公共类SudokuGame处理UI请求并生成/解决SudokuTable。选择性能而不是OOP原则是一种好的实践吗?如果有人想使用我的SudokuTable类创建另一个库,他不会意识到他可以通过修改它返回的列表来阻止它的状态。

性能和面向对象编程并不是相互排斥的-您的代码可能是面向对象的,并且性能很差,等等

如果您在这里陈述,我认为允许外部部分编辑事物的内部状态是不明智的,因此我将返回一个数组或条目的只读集合(可能会使用ObservableCollection和monitor来篡改越界,并相应地“处理”它)(比如说,有例外或什么)-不确定这有多可取)

从这里,您可能会考虑如何公开对这些条目的访问,尽量减少调用方获取完整集合的需要,当他们所需要的只是查找并返回特定的集合时。 值得注意的是,不可编辑的集合也不一定意味着状态不能更改;如果条目由引用类型而不是值类型表示,则返回条目会导致篡改(可能,取决于类定义),因此,对于条目类型,最好使用结构


最后,如果没有一个具体的例子来说明你在哪里遇到了问题,这目前有点主观和理论。你是否尝试过限制收集?如果是,性能如何?问题在哪里?等等。

性能和面向对象编程并不是相互排斥的-你的代码可以是对象的,也可以是面向对象的定向不良、表现不佳等

如果您在这里陈述,我认为允许外部部分编辑事物的内部状态是不明智的,因此我将返回一个数组或条目的只读集合(可能会使用ObservableCollection和monitor来篡改越界,并相应地“处理”它)(比如说,有例外或什么)-不确定这有多可取)

从这里,您可能会考虑如何公开对这些条目的访问,尽量减少调用方获取完整集合的需要,当他们所需要的只是查找并返回特定的集合时。 值得注意的是,不可编辑的集合也不一定意味着状态不能更改;如果条目由引用类型而不是值类型表示,则返回条目会导致篡改(可能,取决于类定义),因此,对于条目类型,最好使用结构


最后,如果没有一个具体的例子来说明你在哪里遇到了问题,这目前有点主观和理论。你是否尝试过限制收集?如果是,性能如何?问题在哪里?等等。

性能和面向对象编程并不是相互排斥的-你的代码可以是对象的,也可以是面向对象的定向不良、表现不佳等

如果您在这里陈述,我认为允许外部部分编辑事物的内部状态是不明智的,因此我将返回一个数组或条目的只读集合(可能会使用ObservableCollection和monitor来篡改越界,并相应地“处理”它)(比如说,有例外或什么)-不确定这有多可取)

从这里,您可能会考虑如何公开对这些条目的访问,尽量减少调用方获取完整集合的需要,当他们所需要的只是查找并返回特定的集合时。 值得注意的是,不可编辑的集合也不一定意味着状态不能更改;如果条目由引用类型而不是值类型表示,则返回条目会导致篡改(可能,取决于类定义),因此,对于条目类型,最好使用结构


最后,如果没有一个具体的例子来说明你在哪里遇到了问题,这目前有点主观和理论。你是否尝试过限制收集?如果是,性能如何?问题在哪里?等等。

性能和面向对象编程并不是相互排斥的-你的代码可以是对象的,也可以是面向对象的定向不良、表现不佳等

如果您在这里陈述,我认为允许外部部分编辑事物的内部状态是不明智的,因此我将返回一个数组或条目的只读集合(可能会使用ObservableCollection和monitor来篡改越界,并相应地“处理”它)(比如说,有例外或什么)-不确定这有多可取)

从这里,您可能会考虑如何公开对这些条目的访问,尽量减少调用方获取完整集合的需要,当他们所需要的只是查找并返回特定的集合时。 值得注意的是,不可编辑的集合也不一定意味着状态不能更改;如果条目由引用类型而不是值类型表示,则返回条目会导致篡改(可能,取决于类定义),因此您可能会更好