gpt4 book ai didi

c# - 在 C# 的方法中使用 'ref' 关键字作为字符串参数的影响?

转载 作者:可可西里 更新时间:2023-11-01 08:37:03 25 4
gpt4 key购买 nike

作为一个对 .NET 管道不太了解的程序员,我想知道在 C# 中使用 ref 字符串作为参数是否有利于提高性能?

假设我有这样的方法:

public int FindSomething(string text)
{
// Finds a char in the text and returns its index
}

当我使用这个方法时,编译器会为该方法创建一个文本副本,对吗?

但是如果我使用 ref关键词:

public int FindSomething(ref string text)
{
// Finds a char in the text and returns its index
}

.. 编译器应该只发送文本的指针地址...

那么像这样使用 ref 对性能有好处吗?

最佳答案

When I use this method, the compiler creates a copy of the text for the method, right?

不,它没有。 string 是引用类型,编译器将创建一个新的堆栈变量,该变量指向在给定内存地址处表示的相同 string。它不会复制字符串。

当您在引用类型上使用 ref 时,不会创建指向 string 的指针副本。它只会传递已经创建的引用。这只有在你想创建一个全新的 string 时才有用:

void Main()
{
string s = "hello";
M(s);
Console.WriteLine(s);
M(ref s);
Console.WriteLine(s);
}

public void M(string s)
{
s = "this won't change the original string";
}

public void M(ref string s)
{
s = "this will change the original string";
}

So is it good for performance using ref like this?

性能提升不会很明显。将会发生的是其他开发人员对您为什么使用 ref 来传递字符串感到困惑。

关于c# - 在 C# 的方法中使用 'ref' 关键字作为字符串参数的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31368068/

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