Мне интересно, как можно доказать, что инфраструктура .NET работает за кулисами.Список <String> ByRef
У меня есть метод, который принимает параметр List<String> originalParameterList
.
В моем методе у меня есть еще один List<String> newListObj
если я следующее:
List<String> newListObj = originalParameterList
newListObj.Add(value);
newListObj.Add(value1);
newListObj.Add(value2);
Количество в originalParameterList растет (+3).
Если я это сделать:
List<String> newListObj = new List<String>(originalParamterList);
newListObj.Add(value);
newListObj.Add(value1);
newListObj.Add(value2);
Количество в originalParameterList остается SAMES (+0).
Я также обнаружил, что этот код ведет себя так же:
List<String> newListObj = new List<String>(originalParamterList.ToArray());
newListObj.Add(value);
newListObj.Add(value1);
newListObj.Add(value2);
Количество в originalParameterList остается SAMES (+0).
Вопрос в том, есть ли способ увидеть, что .NET Framework делает за кулисами окончательно?
Вы можете изучить IL. Кроме того, вы передаете ссылки на новый список при его создании. Вы не влияете на исходный список. –
Внимательно прочитайте [** MSDN **] (http://msdn.microsoft.com/en-us/library/fkbw11z0.aspx). Вы также можете использовать отражатель, например ['ILSpy'] (http://ilspy.net/). Другим ресурсом является [спецификация языка C#] (http://www.ecma-international.org/publications/standards/Ecma-334.htm). –
см. [Http://stackoverflow.com/questions/186891/why-use-ref-keyword-when-passing-an-object](http://stackoverflow.com/questions/186891/why-use-ref- keyword-when-through-an-object) – saamorim