我很遗憾地提出一个概念性的问题,但我很难想象回归一个价值的想法'从一种方法。我还是初学者,对此感到抱歉。
以此代码段为例:
List<User> users = api.getUsers();
注意它是如何返回一维字符串数组的,randomNamePossibilities [15]。此方法的目的是生成一个带有public static NameGenerator(string x)
{
Random r = new Random();
string[] randomNamePossibilities = new string[15]
{
"John", "Billy", "Tommy", "Kyle", "Jackson", "George", "Paco",
"Sruy", "Mateus", "Matt",
"Jared", "Sage", "Kai", "Trent", "Dillon"
};
int randomNumberPicker = r.Next(15);
return randomNamePossibilities[randomNumberPicker];
}
(最大值为15)的随机数,然后该方法将这些随机化名称之一作为字符串从数组中返回。
我得到的错误是Random r
&amp; NameGenerator()
给我错误&#39;方法必须有一个返回类型&#39;和&#39;由于Person.NameGenerator(string)返回void,因此返回关键字后面不能跟一个对象表达式。 &#39;
所以我的问题是:在明确简单的术语中,返回在这样的方法中做什么?在什么情况下使用得当?如果我使用void,为什么这段代码会给我一个错误?我怎样才能重写这个功能呢?
答案 0 :(得分:0)
返回值表示方法返回的值作为调用者的值。
这可以是一个值,一个引用,一个地址(带有不安全的代码)或根本没有。
想想这个简单的功能:
f(x) = m*x+n
当你在另一个环境中使用它时:
g(x) = f(x)*2+10^x
在这种情况下,f(x)
将其自身的值返回到另一个函数中。
这与编程语言处理方法的方式相同(这也就是为什么它们通常被称为函数)。
但是如果您不想返回任何内容,则使用void
表示没有给出返回值。
这并不意味着return
关键字没有用。
return
总是在调用方法时退出。
见这个例子:
public int Foo()
{
int x = 0;
return 2; //Exits the method
return 0; //Will never be hit at all
}
你可以在void方法中使用return
而不用任何值来退出任何给定位置的方法。
答案 1 :(得分:0)
返回类型就是:它指示您希望从方法返回的类型。
方法dir %ProjectDir%TypeScript\*.ts /b /s | findstr /v /i /g:%ProjectDir%TypeScript\strictFiles.txt > tsFiles.txt
的返回类型为string Hello() { return "Hello"; }
,并返回一个字符串。
您的方法声明:
string
缺少退货类型。编译器原谅你,因为它不会立即停止评估该方法中的代码,但C#中的类方法需要返回类型。
请注意,编译器首先注意到您缺少声明的返回类型(“Method必须具有返回类型”),然后假设您需要public static NameGenerator(string x)
方法。您不能void
方法{{1>} {“因为Person.NameGenerator(字符串)返回void,返回关键字后面不能跟对象表达式”)。
如果不想要从方法返回任何内容,则将其返回类型声明为return something;
:
void
您可以使用void
关键字(过早地)退出方法,对于非void方法,您必须在此时返回一些内容。
要修复方法,您需要添加返回类型:
public void SayHello()
{
Console.WriteLine("Hello");
}
现在,如果您的方法没有返回任何内容,但仍想从中返回,则只需使用return关键字:
return
在这里,public static string NameGenerator(string x)
{
// ...
int randomNumberPicker = r.Next(15);
return randomNamePossibilities[randomNumberPicker];
}
使得执行离开该方法。
答案 2 :(得分:0)
忽略示例中的代码,在方法声明中显式定义了返回类型。示例:
public int MethodName()
{
int i = 1;
return i;
}
为什么返回值很重要?
当您致电您的方法时(有时您不会),可以分配或比较返回值。例如:
if(MethodName() == 1)
{
MessageBox.Show("The returned value from MethodName is 1");
}
另一个例子:
int i2 = MethodName(); //i2 is now equal to 1, since MethodName returns a value of 1
具有不同返回值的更多示例:
public string StringMethod()
{
string s = "this is a string";
return s;
}
public void MainMethod()
{
string newString = StringMethod(); //newString is now equal to "this is a string"
if(StringMethod().Equals(newString))
{
//this code block will run, since both string are "this is a string"
}
}
答案 3 :(得分:0)
您的方法缺少返回类型(此固定代码示例中的第一个&#39;字符串&#39;字)。
return指示运行时计算关键字&#39; return&#39;之后的值。然后停止执行该方法并返回到调用此方法的方法。当它是方法的最后一行时,它是多余的,这就是为什么有些语言根本不需要它,但它对于CSharp是必要的。
public static string NameGenerator(string x)
{
Random r = new Random();
string[] randomNamePossibilities = new string[15]
{
"John", "Billy", "Tommy", "Kyle", "Jackson", "George", "Paco",
"Sruy", "Mateus", "Matt",
"Jared", "Sage", "Kai", "Trent", "Dillon"
};
int randomNumberPicker = r.Next(15);
return randomNamePossibilities[randomNumberPicker];
}
答案 4 :(得分:0)
您的代码段的主要问题是,您的方法signatur未定义返回类型。使用void
然后您有一个方法,并且此方法不返回任何内容(并且正文中不允许return
关键字。或者您定义返回类型,例如String
,{{ 1}}等等,你有一个函数返回一些值/对象。(正文中需要int
个关键字。)
您的方法签名应该类似于
return