C# 功能赢得';不要让我返回字符串

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”),但当我编写“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 <= 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非常感谢你我的否决票,答案似乎正确?