C# 功能赢得';不要让我返回字符串
理论上,下面的函数应该返回一个字符串(“join”),但当我编写“return join”时,它会给我一个错误提示:C# 功能赢得';不要让我返回字符串,c#,string,C#,String,理论上,下面的函数应该返回一个字符串(“join”),但当我编写“return join”时,它会给我一个错误提示:使用未分配的局部变量“join”。下面是我的代码: public string function(string input) { string join; var token = input.Split('.').Select(p => Regex.Split(p, " ")).ToArray(); for (int i = 0; i <= to
使用未分配的局部变量“join”。
下面是我的代码:
public string function(string input)
{
string join;
var token = input.Split('.').Select(p => Regex.Split(p, " ")).ToArray();
for (int i = 0; i <= token.Length; i++)
{
join = string.Join(" ", token[i]);
}
return join;
}
公共字符串函数(字符串输入)
{
串接;
var-token=input.Split('.')。选择(p=>Regex.Split(p,“”)。ToArray();
对于(int i=0;i您正在声明string
变量join
,而没有给它一个初始值。例如,如果正则表达式不生成令牌,则token
数组可能为空,并且将跳过for
循环。将永远不会设置join
变量的值
即使根据方法的规范知道这个条件是不可能的,编译器也不一定知道,因此它会导致编译器错误,需要声明变量
解决此错误的简单方法是将值设置为null或空字符串:
string join = null; // or ""
join仅在“for”内分配,这意味着如果token.Length为0会发生什么?将永远不会分配join。您应该初始化变量:string joing=“”;
祝你过得愉快!string join=“”;
token
为空,因此join
从未被分配任何值。我假设你的LINQ在某种程度上是不正确的。你怎么知道循环体将至少执行一次?@L.B非常感谢你我的否决票,答案似乎正确?