相关疑难解决方法(0)

.NET中ref和out参数之间的区别

.NET中的参数refout参数有什么区别?一个人比另一个人更有用的情况是什么?什么是一个可以使用而另一个不能使用的代码片段?

.net c#

401
推荐指数
7
解决办法
26万
查看次数

何时使用vs ref vs out

前几天有人问我应该使用参数关键字out而不是ref.虽然我(我认为)明白之间的差别refout关键字(已问过)和最好的解释似乎是ref== inout,都有些什么(假设或代码)的例子,我应该一直使用out,而不是ref.

既然ref更一般,你为什么要用out?它只是语法糖吗?

c#

373
推荐指数
13
解决办法
19万
查看次数

C#中引用类型变量的"ref"有什么用?

我理解如果我传递一个值类型(int,struct等)作为参数(没有ref关键字),该变量的副本将传递给该方法,但如果我使用该ref关键字,则传递对该变量的引用,不是新的.

但是使用引用类型(如类),即使没有ref关键字,也会将引用传递给方法,而不是副本.那么ref关键字与引用类型的用途是什么?


举个例子:

var x = new Foo();
Run Code Online (Sandbox Code Playgroud)

以下有什么区别?

void Bar(Foo y) {
    y.Name = "2";
}
Run Code Online (Sandbox Code Playgroud)

void Bar(ref Foo y) {
    y.Name = "2";
}
Run Code Online (Sandbox Code Playgroud)

c# parameters pass-by-reference pass-by-value

167
推荐指数
6
解决办法
4万
查看次数

字段初始化

以下两种字段初始化方式之间是否存在差异?什么时候使用哪一个?

第一种方式

public class Class1
{
   private SomeClass someclass;

   public Class1()
   {
       someclass = new SomeClass(some arg);
   }
}
Run Code Online (Sandbox Code Playgroud)

第二种方式

public class Class1
{
   private SomeClass someclass = new SomeClass(some arg);
}
Run Code Online (Sandbox Code Playgroud)

第二个例子中的字段可以是只读的.

.net c# oop

19
推荐指数
3
解决办法
8280
查看次数

谷歌关于输入/输出参数的样式指南作为指针

谷歌C++样式指南绘制有明显的区别(严格接着cpplint.py输入参数之间)(→常量REF,值)和输入-输出或输出参数(→非const的指针):

C/C++函数的参数既可以是函数的输入,也可以是函数的输出,或者两者兼而有之.输入参数通常是值或const引用,而输出和输入/输出参数将是非常量指针.

并进一步 :

事实上,在Google代码中,一个非常强大的约定是输出参数是值或const引用,而输出参数是指针.

但我无法弄清楚为什么不应该通过引用传递输入/输出参数(我将输出参数放在一边).在stackoverflow上有很多与这个问题相关的主题:例如,在这里,接受的答案清楚地说明了这一点

它主要是关于风格

但是如果

如果您希望能够传递null,则必须使用指针

那么,如果我想避免指针为空,总是需要一个指针是什么意思?为什么只使用输入参数的引用?

c++ parameters reference google-style-guide cpplint

10
推荐指数
2
解决办法
1万
查看次数

什么是Ref和Out之间的差异?

可能重复:
'ref'和'out'关键字之间有什么区别?

ref和之间有什么区别out?我很困惑何时使用refout.所以请解释如何使用refout,以及在哪些情况下.

.net c# syntax

5
推荐指数
1
解决办法
1022
查看次数

为什么C#中的"out"参数作为语言构造存在?

为什么C#中的"out"参数作为语言构造存在?

详细阐述这个问题

为什么它首先存在?是否有更好的语言功能可以获得"out"参数可以获得的相同效果?

使值类型的行为类似于引用类型,这不奇怪吗?

是不是有更好的方法从方法返回多个值?

它是一个历史性的东西,意味着C#的第一个版本没有办法实现使用out参数可以实现的东西,但现在有更新的功能,它只是保留在语言中以便向后兼容?

我不是在问什么

  1. 我不是在问它是做什么的
  2. 我不是在问它是如何使用的
  3. 我不是在问"ref"和"out"之间的区别是什么
  4. 我读过应该避免使用它并选择其他结构

在阅读类似的问题时,我没有发现任何重复.

预期答案格式

我很想听到这样的话:"看,这是一个只能通过使用"out"参数语言结构来解决的问题,这里有一个代码示例......".

或者,"看,这曾经是解决以下问题的唯一方法......代码示例......,但是因为C#版本...更好的解决方法就是这样......代码示例......" .

没有意见.

c# out

4
推荐指数
2
解决办法
338
查看次数

在C#中通过输出和参考传递参数之间的区别是什么

我一直在努力研究C#方法.有三种方法可以将参数传递给C#方法.

值参数:此方法将参数的实际值复制到函数的形式参数中.在这种情况下,对函数内部参数所做的更改对参数没有影响.

引用参数:此方法将对参数的内存位置的引用复制到形参中.这意味着对参数所做的更改会影响参数.

输出参数:此方法有助于返回多个值.

我通过以下示例代码了解了上述类型的传递参数.

using System;
namespace PassingParameterByReference
{
   class MethodWithReferenceParameters
   {
      public void swap(ref int x)
      {
        int temp = 5;
        x = temp;
      }

      static void Main(string[] args)
      {
         MethodWithReferenceParameters n = new MethodWithReferenceParameters();
         /* local variable definition */
         int a = 100;
         Console.WriteLine("Before swap, value of a : {0}", a);
         /* calling a function to swap the value*/
         n.swap(ref a);
         Console.WriteLine("After swap, value of a : {0}", a);
         Console.ReadLine();

      }
   } …
Run Code Online (Sandbox Code Playgroud)

c# parameters methods parameter-passing pass-by-reference

3
推荐指数
1
解决办法
2831
查看次数

ref 和 out 值类型变量

out 上的 msdn 文档说作为 out 传递的参数必须在函数内部分配一个值。来自网站的示例:

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
       // value is now 44
    }
 }
Run Code Online (Sandbox Code Playgroud)

根据我的理解,当声明 int "value" 时,它已经被分配了一个默认值 0(因为 int 是一个值类型并且不能为 null。)那么为什么有必要让 "Method" 修改它的值呢?

同样,如果使用“ref”而不是“out”,是否还需要初始化“value”?

有这样的问题'ref' 和 'out' 关键字什么区别?但没有人想把 2 和 2 放在一起。

c# methods ref out

2
推荐指数
1
解决办法
892
查看次数

如何从Unity中的函数返回多个值?

我知道这是一个以前被问过的重复问题,但我发现的所有问题一般都是指C#,但我认为Unity不支持.NET 4.6,而不是最新的框架?

我有一个函数,如果bool对于几个类别中的每一个都为真,则传递多个变量.

void CheckData()
{
    if (int 1 > int 2)
    {
        otherScript.Function(var 1, var 2, var 3)
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数查询SQL数据库并根据SQL数据定义输入的变量.有一种简单的方法可以返回多个变量的值吗?从我一直在做的研究来看,似乎有一种方法可以在较新版本的.NET中这样做,但是因为它不支持元组而不能使用Unity?

我也读过人们说你可以返回一个数组,然后在函数之外对数据进行排序,但后来我读到其他人说相反,我发现的信息不一致.

有谁可以让我知道实现这一目标的最简单方法?如果需要,我只需硬编码每个单独的变量并手动完成,但我正在努力保持我的代码清洁,所以如果有更好的方法,我想知道在我花费数小时编写不正确的东西之前.

编辑:建议的重复帖子链接显示了如何通过创建另一个类来实现这一点,但我正在寻找一个更简单的解决方案,下面回答.谢谢.

c# unity-game-engine

1
推荐指数
1
解决办法
1745
查看次数

Vala中"ref"和"out"关键字的目的是什么?

这些关键字应该如何以及何时使用?

它们与C#的目的是否相同?

c# parameter-passing vala

0
推荐指数
1
解决办法
530
查看次数

ref与out参数之间有什么区别?

在C#中,refout参数有什么区别?

例:

void method1(ref int p1)
{
 //....
}

void method2(out int p2)
{
 //....
}
Run Code Online (Sandbox Code Playgroud)

另外,每种方法的使用指南是什么?

c# parameters

-3
推荐指数
1
解决办法
8662
查看次数

"Ref"和"Out"参数的内存分配有什么区别?

在C#refout关键字中.

它如何影响内存管理?内存管理refout关键字有什么区别吗?

c# ref out

-6
推荐指数
1
解决办法
342
查看次数