gpt4 book ai didi

c# - 为什么有时我必须通过引用传递一个类,而有时却不需要?

转载 作者:行者123 更新时间:2023-11-30 14:16:40 25 4
gpt4 key购买 nike

我有一个方法需要 List<Foobar>Foobar作为参数。 Foobar 是一个常规类,具有私有(private)变量、构造函数和对数据进行操作的方法。

我修改了方法中传递的两个实例,但出于某种原因,我必须通过 ref 传递 Foobar关键字,否则更改不会在方法完成时保留。我不必为列表执行此操作。

我最近在我的编程中注意到了几次。通常在将类的实例传递给方法时,修改它会更改实例,但有时不会,它需要 ref坚持更改的关键字。它在工作时似乎相当随机。有谁知道这是为什么吗?

最佳答案

如果参数的值发生变化,像这样:

parameter = new SomeValue();

然后调用者使用 ref看到该更改。

如果您正在更改调用者传递引用的对象的内容,则可以按值传递该引用:

public void AppendHello(StringBuilder builder)
{
// This changes the data within the StringBuilder object that the
// builder variable refers to. It does *not* change the value of the
// builder variable itself.
builder.Append("Hello");
}

查看我的 article on parameter passing获取更多信息。

请注意,如果参数类型是结构而不是类,那么您不会将引用的副本传递给对象 - 您将传递实际数据本身。在那种情况下,您还需要使用 ref

关于c# - 为什么有时我必须通过引用传递一个类,而有时却不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7135227/

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