gpt4 book ai didi

c# - 丢弃和不分配变量有什么区别?

转载 作者:行者123 更新时间:2023-12-03 14:35:03 26 4
gpt4 key购买 nike

在 c# 7.0 中,您可以使用丢弃。使用丢弃和简单地不分配变量有什么区别?

public List<string> DoSomething(List<string> aList)
{
//does something and return the same list
}
_ = DoSomething(myList);
DoSomething(myList);
有什么区别吗?

最佳答案

两行代码完全没有区别。
它们都转换为完全相同的 IL:

public void A(List<string> myList)
{
_ = DoSomething(myList);
}

public void B(List<string> myList)
{
DoSomething(myList);
}
两者都翻译为:
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: call instance class [System.Private.CoreLib]System.Collections.Generic.List`1<string> C::DoSomething(class [System.Private.CoreLib]System.Collections.Generic.List`1<string>)
IL_0007: pop
IL_0008: ret
您可以在 SharpLab 上自行查看
(注意:我实际上看不懂 IL,但这是 A 和 B 方法的结果)
正如 Liam 在他的回答中所写的,丢弃是有用的,对于 out您不会使用的参数,用于元组解构、模式匹配和 switch 表达式。
您可以在 official documentation. 中阅读所有相关信息。
更新 Liam 的评论:
请注意,我仅指此特定场景。
当按预期使用时,丢弃可以节省内存和/或提高代码的可读性。

关于c# - 丢弃和不分配变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64331169/

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