作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以今天我发现c#默认按值传递引用类型。这与我认为我的理解背道而驰——引用类型以引用为标准。好吧。
这让我想到了一个我拥有的方法,该方法将实体对象作为参数,附加到上下文,并对其进行一些更改。该方法没有返回对象。在我的上下文中调用保存更改时,应用了方法中所做的更改。当时我假设它有效,因为我正在传递对该对象的引用,因此可以愉快地更改它而无需返回任何内容以重新分配。
所以问题是,这是如何工作的? (代码确实按我的预期工作)。
谢谢,
最佳答案
是的,这东西很棘手。我发现自己已经有几个月没有想过它了,然后不得不想几秒钟才能再次理清头绪。虽然早就明白了。
尽管参数 是按值的,但这只是意味着创建了一个新的引用变量,但仍然指向同一个对象。如果您通过引用创建参数,那么将传入相同的指针,这当然指向相同的对象。
当您弄乱参数变量时,情况会有所不同。如果将它设置为 null 或其他某个对象,变量“outside”将不会受到影响。但是,如果参数是按值传入的,则将变量设置为 null 或另一个对象将更改“外部”的引用。
对于值类型,参数是按引用还是按值通常会产生实际差异。如果按值传递,对值或成员(如果它是结构)的更改将不会反射(reflect)在“外部”。
这是一个 good explanation带有简单的示例。
关于c# - Entity Framework : How does the data context deal with duplicate objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822105/
我是一名优秀的程序员,十分优秀!