c# - 为什么在 C# 中使用 out 关键字而不是赋值?

标签 c# language-design

在深入阅读 C# 中有关它的部分后,我一直在研究 C# 中的 out 关键字。我似乎找不到一个例子来说明为什么需要关键字而不是仅仅分配 return 语句的值。例如:

public void Function1(int input, out int output)
{
    output = input * 5;
}

public int Function2(int input)
{
    return input * 5;
}

...
int i;
int j;

Function1(5, out i);
j = Function2(5);

现在 i 和 j 具有相同的值。仅仅是为了方便不用 = 符号就可以进行初始化,还是有一些我没有看到的其他派生值?我看到一些类似的答案提到它将初始化的责任转移给被调用者 here .但是所有这些额外的东西而不是仅仅分配一个返回值并且没有一个无效的方法签名?

最佳答案

通常 out 用于返回其他内容的方法,但您仍然需要从该方法中获取不同的值。

一个很好的例子是 Int32.TryParse(input, out myVar) 如果成功则返回 true,否则返回 false。您可以通过 out 参数获取转换后的 int。

int myOutVar;

if (Int32.TryParse("2", out myOutVar))
{
   //do something with the int
}else{
    //Parsing failed, show a message
}

关于c# - 为什么在 C# 中使用 out 关键字而不是赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862163/

相关文章:

memory-management - 基于区域的内存管理

stack - 无堆栈语言是如何工作的?

c# - 无法为对象类重载运算符 '+'

logic - 为什么编程语言不使用简化的 bool 表达式?

c# - 使用 MVVM 的 TreeView BringIntoView

c# - 为什么我在 C# WinForms 到 MySQL 数据库的 SELECT 语句中出现此错误?

c# - 为什么我们必须命名接口(interface)方法参数?

c# - 哪种语言习语/范式/特性使得添加对 "type providers"的支持变得困难?

c# - 计算 2 个日期之间的周数

c# - 从 .Net Framework 4.6.1 控制台应用程序转到 Core 2.0 控制台应用程序后,Newtonsoft DeserializeObject 出现错误