在c#中按引用返回?

San*_*hak 2 c#

如何使用函数通过引用返回.请给我提供完整的函数定义,它在c#中通过引用返回.是否有其他方法可以传递引用?请帮忙.

dtb*_*dtb 5

这是一个按值返回对象引用的方法:

string Foo()
{
    return "Hello";
}

string f = Foo();
//  f == "Hello"
Run Code Online (Sandbox Code Playgroud)

您不能通过引用返回任何内容,但可以通过引用将变量作为参数传递:

void Bar(ref string s)
{
    s = "Hello";
}

string f = null;
Bar(ref f);
//  f == "Hello"
Run Code Online (Sandbox Code Playgroud)

请参阅:C#中的参数传递

  • @JustBoo:如果你想让'Bar`分配给`f`,你需要`ref`. (2认同)

Sku*_*del 5

听起来有些mean昧,您应该阅读C#参考:)

C#将事物分为引用类型和值类型。您可以想象,引用类型是通过引用传递的。这意味着传递了对该对象的引用。

这是通过引用返回的人为设计示例:

class MyClass // <- Reference type.
{
   private MyClass _child = new MyClass();

   public MyClass GetChild()
   {
      return _child;
   }
}
Run Code Online (Sandbox Code Playgroud)

值类型按值传递;尽管我想在幕后做些其他事情。不过,这对您并不重要,只有行为很重要。

值类型的例子:intcharColor...

通过创建引用类型,通过创建class值类型struct

  • 对于具有C ++背景的人来说,这个问题是正确的,并且C#的处理方式不是很明显。如果有一个函数`List &lt;int&gt; FindIntegers(object anObject);`和另一个函数`List &lt;int&gt; FindIntegers(ref object anObject)`,则以下内容不是很清楚:1)返回的列表,碰巧是一个类或全局,将是该类或全局的引用,还是它的副本?(例如,如果在FindIntegers中有“ return MyGlobalIntegerList”)和2)两个函数都将参数作为引用,第二个函数将具有该参数得到参考的参考? (5认同)
  • 请记住,“通过引用”是许多人都会争论的模棱两可的概念。精确的版本是“默认情况下,对象引用作为值传递”和“ ref关键字将引用传递给对象引用”,或类似的形式。 (4认同)