gpt4 book ai didi

c# - TryGetValue - 传递未初始化的值好吗?

转载 作者:太空狗 更新时间:2023-10-29 21:17:20 27 4
gpt4 key购买 nike

将以下代码用于展览 A:

string sql;
if (!GetQueries.TryGetValue(type.TypeHandle, out sql))

Dictionary 的文档说如果找不到 Key,引用类型将被设置为 null。好的,没关系。

如果找到key,变量'sql'如何填充?找到的键值是否被克隆?是否为找到的项目创建了一种对象,然后复制了该对象的内容?这样安全吗?

或者,要为出站对象设置一个驻留位置,调用应该设置为 exhibit B:

var sql = string.Empty;
if (!GetQueries.TryGetValue(type.TypeHandle, out sql))

然后变量“sql”被初始化,对象的安全位置就存在了。

(我的问题来自于我在 C 编程时代对空指针的厌恶。)

最佳答案

在我看来,最好将其设置为一个值。毕竟,该值保证会被方法调用替换(假设不会抛出异常)那么为什么要指定一个毫无意义的值呢?它只会误导读者,让他们认为它有所作为。

out 参数的特殊之处在于,您用来为其提供值的变量不必在调用前明确赋值,但调用后明确分配。它在调用之前具有的任何值对该方法都是不可见的。

(请注意,ref 参数不会以这种方式运行 - 它们必须事先明确分配。)

请参阅我关于 C# argument passing 的文章有关 C# 中不同参数模式的更多详细信息。

If the key is found, how is the variable 'sql' filled? Is the found value for the key cloned? Is a type of object for the item found created and then the contents of the object copied?

方法中参数的值成为调用者代码中变量的值,与正常赋值的方式相同。没有对象克隆正在进行。

关于c# - TryGetValue - 传递未初始化的值好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26040247/

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