我覺得這真的是一個非常蹩腳的問題,但我猜SO
我將獲得答案的速度比通過谷歌搜索它自己:)C#對象修改
比方說,我有一些類構造函數:
public class TestClass {
private readonly IRepository repository;
public TestClass(IRepository repository)
{
this.repository = repository;
// Here is the non-obvious line - it invokes some
// method, which changes the internal contents of
// the repository object.
repository.AddSomething(...);
}
}
現在:
IRepository sqlRepository = new SqlRepository(...);
TestClass testClass = new TestClass(sqlRepository);
1)我在值/引用傳遞在C#
並不好 - 所以請能有人給在這種情況下會發生什麼一步一步解釋。
2)是否sqlRepository
對象得到修改(我假設沒有),是有辦法使TestClass
構造修改(我知道這是邪惡的,只是我知道的)?
3)構造函數中的repository.AddSomething(...)
和this.repository.AddSomething(...)
行具有相同的效果,爲什麼?
4)readonly
對本示例中存儲庫更改的嘗試有什麼影響?