【问题标题】:C# use return value from class in function callC#在函数调用中使用类的返回值
【发布时间】:2015-10-22 12:15:18
【问题描述】:

我试图弄清楚,但我不知道如何将类的新实例的结果传递给函数调用,或者这是否可能。

如果我不想传递随机数,我必须先创建它:

int n = 0;
Random rnd = New Random();
int m = rnd.Next(0, n);

MyClass.MyFunction(MyValue1, m);

实际上,这是 4 行代码。但是,作为 c# 的新手,我已经看过很多,想知道是否有更短的版本。一些伪代码:

MyClass.MyFunction(MyValue1, Random rnd = new Random() {rnd.Next(0, n); return});

这有可能吗?我以为我见过类似的东西,但找不到任何关于它的东西。

【问题讨论】:

  • 您通常需要一个 Random 对象来从中提取随机数,因此在这种情况下,您可能希望您的 new Random 位于构造函数或静态属性中,那么您只需要 @987654325 @ 获取下一个随机数。

标签: c# function call


【解决方案1】:

您可以在new Random() 之后拨打Next

MyClass.MyFunction(MyValue1, new Random().Next(0,n));

new Random() 将创建Random 的对象,您可以在其上调用Next()。所以可以直接调用它而不需要之前存储Random

【讨论】:

  • 非常感谢。没想到这么简单:)
【解决方案2】:

我就把它留在这里

MyClass.MyFunction(MyValue1, ((Func<int>)(() =>
{
    int n = 0;
    var rnd = new Random();
    return rnd.Next(0, n);
}))());

P.S.:它可以编译并工作。

正如@crashmstr 评论的那样,专门针对Random 实际上并不是一个好主意。对于单个随机值是可以的,但是对于一系列随机数,您不想每次都创建新实例,否则您的数字将变为 not so random

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多