gpt4 book ai didi

C#语言理论题

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:39 25 4
gpt4 key购买 nike

给定以下方法,我在其中传递配置 byref,然后使用 foreach 命名集合循环遍历它。在下面的代码示例中,我在循环中更改的值是否会在我通过 ref 传递的主对象中更新,我的意思是没有浅拷贝?或者你能发现我犯的任何错误。

更具体地说,我调用 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);

}
}
}
}

最佳答案

假设这里所有的项目都是类(class) (不是结构),那么是的,但实际上有 不需要对于 configuration作为 ref 传递;你是 已经传递引用(按值),并且您没有重新分配引用,因此不需要 ref这里 完全 .您的更改将被保留并可供调用者使用。

出于完全相同的原因,这将起作用:

Configuration x = new Configuration();
Configuration y = x;
x.Value = "abc";
Console.WriteLine(y.Value); // writes "abc"

在这里,因为 Configuration是(大概)一个 class ,有 仅限 一个对象,以及两个引用同一个对象的变量(在简化的层面上,它们是指向同一个对象的美化指针)。

关于C#语言理论题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com