gpt4 book ai didi

c# - 采用 ref 类型并对其进行操作的 void 方法与将 ref 返回到同一对象的方法之间有什么区别

转载 作者:行者123 更新时间:2023-11-30 21:09:33 24 4
gpt4 key购买 nike

如果操作相同,这两者之间有很大区别吗?在示例 1 中,传递了对对象的引用,并操作了对象。在示例 2 中,传递对象的引用,操作对象,然后...返回相同的引用?

static void Foo(SomeReferenceType t)
{
//Do something with t
}

static SomeReferenceType Foo(SomeReferenceType t)
{
//Do same thing with t
return t;
}

Bar bar = new Bar();

//Does this
Foo(bar);
//Do the same thing as this
bar = Foo(bar);

最佳答案

后者允许在流畅类型接口(interface)中链接方法,但它可以隐藏对象正在被操作的事实。操作以这种方式传递的对象并不是很常见,因为当对象返回时它可能会混淆该方法的使用者。您可能会做的是克隆对象,对其进行操作,然后返回操作后的克隆。这使初始引用中的对象保持不变。

在前者中,消费者正在传递一个变量并说,“亲爱的方法,请获取这个变量并用它做任何你想做的事,包括可能将它指向一个新的内存地址。”因此,开发人员知道传入的状态可能会被操纵。

顺便说一句,我认为您应该阅读以下内容:http://msdn.microsoft.com/en-us/library/0f66670z(v=vs.71).aspx

当我面试潜在的开发人员时,我会问很多关于按引用和按值传递引用和值类型的问题。我采访过高级职位的开发人员,他们不了解这一点,但我认为这是 C# 开发的基础。

关于c# - 采用 ref 类型并对其进行操作的 void 方法与将 ref 返回到同一对象的方法之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9008999/

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