繁体   English   中英

有没有一种方法可以从C#中的方法创建和返回新变量?

[英]Is there a way to create and return new variables from a method in C#?

基本上就像使用out关键字。 但是问题出在out关键字上,您仍然必须在方法调用之外声明一个变量,例如:

double result;
Double.TryParse ( "76", out result );

在我想要的地方:

Double.TryParse ( "76", out result );

然后得到一个名为result的新变量。

有没有办法做到这一点(通过使用或不使用)?

不,您必须先声明变量,因为您要将其传递给方法,唯一的区别是您明确要求该方法在返回之前将其填写。

另外,您可以“扔掉”它,也就是说,您可以再次将其向上传递到堆栈中。 例如:

public void MyMethod(out int MyParam)
{
    SomeMethod(out MyParam);
}

您可以使用C#元组多个变量组合为一个

必须先声明变量,然后才能使用它,并且带有多个参数的方法很快就会变得臭起来。 特别是输出参数。

我认为您想要做的是声明一个包含五个或六个变量的类,并将其作为参数传递给方法:

class Args
{
  public int One { get; set; }
  public int Two { get; set; }
  public int Three { get; set; }
  public int Four { get; set; }
  public int Five { get; set; }
}

然后是一个以它为参数的方法:

public void Foo(Args args)
{
  // Modify members of args here.
}

并像这样使用它:

Args args = new Args();

Foo(args);

// Do stuff with results in args.

在通话前声明它有什么问题?

你为什么要这样做? 没有理由在方法调用之前不声明它,只需要保存一些击键即可。

您的szenario是否有任何意义?

为了在调用函数后使用变量,您必须知道变量的类型。 否则,您将忽略编译器的类型安全性,并且很容易遇到运行时错误。

变量存在于堆栈中,而不是堆中,因此调用函数来创建新变量的概念(虽然很有趣,在其他语言中也不是不可能)意味着您不了解C#中的变量和对象之间的区别。

  • 变量的存储空间分配在堆栈上,并且该变量仅在声明该变量的函数执行期间存在

这与“成员变量”不同,后者是属于对象的字段。

C#中的'out'关键字意味着变量将“通过引用”传递到函数中,并且该函数应(需要)设置变量的值。

通常,应避免使用“输出”参数; 如果您需要从函数中传递多个值,则它们可能属于丢失的对象!

编辑:在C#中,“输出”参数类似于“参考”参数,因为它们都是按引用调用参数,而不是更典型的按值调用参数。

不,您必须将其包装在另一个声明局部变量然后返回的方法中。

通过给出的特定示例,您可以使用:

Double d = Double.Parse( "76" );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM