将列表参数作为 ref 传递
Passing a list parameter as ref
在 C# 中将列表作为参数传递给 ref 有什么好处?
List 不是值类型,因此对其所做的每项更改都会在返回函数后反映出来。
class Program
{
static void Main(string[] args)
{
var myClass = new MyClass();
var list = new List<string>();
myClass.Foo(ref list);
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
class MyClass
{
public void Foo(ref List<string> myList)
{
myList.Add("a");
myList.Add("b");
myList.Add("c");
}
}
我可以删除 "ref",它会正常工作。
所以我的问题是我们需要为列表、数组添加 ref 关键字的用途是什么...
谢谢
这将创建新列表,并将从外部替换 list
变量:
public void Foo(ref List<string> myList)
{
myList = new List<string>();
}
这不会从外部替换 list
变量:
public void Foo(List<string> myList)
{
myList = new List<string>();
}
ref 关键字导致参数通过引用传递,而不是通过值传递。
列表是引用类型。在您的示例中,您试图通过引用方法参数来传递对象,也使用 ref 关键字。
这意味着你在做同样的事情。在这种情况下,您可以删除 ref 关键字。
ref 当你想通过引用传递一些值类型时需要。
例如:
class MyClass
{
public void Foo(ref int a)
{
a += a;
}
}
class Program
{
static void Main(string[] args)
{
int intvalue = 3;
var myClass = new MyClass();
myClass.Foo(ref intvalue);
Console.WriteLine(intvalue); // Output: 6
}
}
您可以在此处找到一些其他规格信息:ref (C# Reference)
在 C# 中将列表作为参数传递给 ref 有什么好处? List 不是值类型,因此对其所做的每项更改都会在返回函数后反映出来。
class Program
{
static void Main(string[] args)
{
var myClass = new MyClass();
var list = new List<string>();
myClass.Foo(ref list);
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
class MyClass
{
public void Foo(ref List<string> myList)
{
myList.Add("a");
myList.Add("b");
myList.Add("c");
}
}
我可以删除 "ref",它会正常工作。 所以我的问题是我们需要为列表、数组添加 ref 关键字的用途是什么... 谢谢
这将创建新列表,并将从外部替换 list
变量:
public void Foo(ref List<string> myList)
{
myList = new List<string>();
}
这不会从外部替换 list
变量:
public void Foo(List<string> myList)
{
myList = new List<string>();
}
ref 关键字导致参数通过引用传递,而不是通过值传递。 列表是引用类型。在您的示例中,您试图通过引用方法参数来传递对象,也使用 ref 关键字。
这意味着你在做同样的事情。在这种情况下,您可以删除 ref 关键字。
ref 当你想通过引用传递一些值类型时需要。 例如:
class MyClass
{
public void Foo(ref int a)
{
a += a;
}
}
class Program
{
static void Main(string[] args)
{
int intvalue = 3;
var myClass = new MyClass();
myClass.Foo(ref intvalue);
Console.WriteLine(intvalue); // Output: 6
}
}
您可以在此处找到一些其他规格信息:ref (C# Reference)