Учитывая следующий метод, когда я передаю конфигурацию byref, прокручиваем его с помощью коллекции foreach named. В следующем примере кода значения, которые я изменяю в цикле, будут обновляться в основном объекте, который я прошел через ref, что я имею в виду, это НЕ мелкие копии? Или вы можете обнаружить любую ошибку, которую я совершил.Вопрос теории языка C#
Более конкретно, строка, где я вызываю config.Value = ..... объект конфигурации имеет набор конфигураций, поэтому будут ли они обновляться в основном объекте (конфигурации) после вызова этой функции?
Заранее спасибо.
public static void DecryptProviderValues(ref MyConfiguration configuration)
{
foreach (var provider in configuration.Providers)
{
var configItems = provider.Configurations;
foreach (Configuration config in configItems)
{
if(EncryptionManager.IsEncrypted(config.value))
{
config.Value = EncryptionManager.Decrypt(config.Value);
}
}
}
}
foreach делает коллекцию неизменной, если обновления коллекции не выполняются после выполнения цикла, как при использовании NHibernate и промывки после того, как мы закончим цикл. Спасибо –
@Mahesh Velaga: коллекция * сама * никогда не изменяется, поэтому, пока это * true *, она не связана. –
@Marc: Я действительно хочу узнать больше об этом, можете ли вы указать мне на хорошую ссылку, касающуюся изменения коллекций в foreach, а также когда они изменяются, а когда нет. Спасибо :) –