out 参数在 C# 中不起作用。为什么?
The out parameter does not work in C#. Why?
out
参数在 C# 中不起作用。为什么?
这是我的代码:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var hashSet = new HashSet<int>(2);
Console.WriteLine(hashSet.Contains(2));
}
public ListNode ReverseList(ListNode head)
{
helper(head, out var newHead);
return newHead;
}
private ListNode helper(ListNode current, out ListNode newHead)
{
newHead = null;
if (current == null)
{
return null;
}
var next = helper(current.next, out newHead);
if (next == null)
{
newHead = current;
}
else
{
next.next = current;
}
return current;
}
}
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null)
{
this.val = val;
this.next = next;
}
}
这是我遇到的错误:
Compilation error (line 13, col 30): ) expected
Compilation error (line 13, col 37): ; expected
Compilation error (line 13, col 37): Invalid expression term ')'
我连续花了 2 个小时试图找出问题所在。请帮助我。
Here是我在线的代码。
我在 dotnet fiddle 上尝试了您的示例,编译器(版本)似乎很重要。当 运行 你的代码在 .NET 4.7.2 编译器上时,我遇到了同样的异常,但是当你将编译器更改为 Roslyn 3.8 或 .NET 5 时,示例有效。
更改第 13 行
helper(head, out var newHead);
至
var newHead = new ListNode();
helper(head, out newHead);
如果您使用的 Visual Studio 版本错误,即使框架版本正确,也会发生这种情况。请注意,double-clicking 解决方案 (.sln) 文件并不总是会导致项目以所需的 VS 版本打开。如果您安装了多个 VS 版本,请先启动所需版本,然后使用“文件”菜单打开解决方案。
out
参数在 C# 中不起作用。为什么?
这是我的代码:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var hashSet = new HashSet<int>(2);
Console.WriteLine(hashSet.Contains(2));
}
public ListNode ReverseList(ListNode head)
{
helper(head, out var newHead);
return newHead;
}
private ListNode helper(ListNode current, out ListNode newHead)
{
newHead = null;
if (current == null)
{
return null;
}
var next = helper(current.next, out newHead);
if (next == null)
{
newHead = current;
}
else
{
next.next = current;
}
return current;
}
}
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null)
{
this.val = val;
this.next = next;
}
}
这是我遇到的错误:
Compilation error (line 13, col 30): ) expected
Compilation error (line 13, col 37): ; expected
Compilation error (line 13, col 37): Invalid expression term ')'
我连续花了 2 个小时试图找出问题所在。请帮助我。
Here是我在线的代码。
我在 dotnet fiddle 上尝试了您的示例,编译器(版本)似乎很重要。当 运行 你的代码在 .NET 4.7.2 编译器上时,我遇到了同样的异常,但是当你将编译器更改为 Roslyn 3.8 或 .NET 5 时,示例有效。
更改第 13 行
helper(head, out var newHead);
至
var newHead = new ListNode();
helper(head, out newHead);
如果您使用的 Visual Studio 版本错误,即使框架版本正确,也会发生这种情况。请注意,double-clicking 解决方案 (.sln) 文件并不总是会导致项目以所需的 VS 版本打开。如果您安装了多个 VS 版本,请先启动所需版本,然后使用“文件”菜单打开解决方案。