私のメソッドはSearchCriteriaパラメータを受け取り、この1つのパラメータを2つのメソッドに渡します。 GetFoo1では、データベースを照会する別のメソッドに渡される前に、基準オブジェクトが変更されます。パラメータとして使用すると変数の値が変化する
私の予想は、このメソッドの範囲内で基準オブジェクトを変更しないことです。つまり、基準となる基準を渡していないため、正確に同じオブジェクトがGetFoo1とGetFoo2に渡されます。この例ではhttps://msdn.microsoft.com/en-us/library/s6938f28.aspx
public virtual async Task<SnapshotObject> GetSnapshot(SearchCriteria criteria)
{
var snapshot = new SnapshotObject();
snapshot.Foo1 = await GetFoo1(criteria);
snapshot.Foo2 = await GetFoo2(criteria);
return snapshot;
}
私はGetFoo1を呼び出すときに、私は基準値によって渡されることを期待したいです。何らかの理由で、私がGetFoo1に条件オブジェクトを渡すと、変更をGetFoo2に渡すと、変更がそのまま継承されます。
あなたは、クラスのインスタンスを '複製'したいと思うかもしれません。 – jdweng
Jon Skeetにはこれに関する非常に良い記事があります。 [この記事を参照](http://jonskeet.uk/csharp/parameters.html) – Flott