static void Main(string[] args)
{
string myst = "ABCDEF";
List<string> myresult = new List<string>();
for (int i = 1; i < myst.Length; i++)
{
myresult.AddRange(fun(i, myst).ToArray());
}
foreach (var a in myresult)
{
Console.WriteLine(a);
} Console.ReadLine();
}
public static List<string> fun(int n,string myst)
{
if (n > 1)
{
List<string> myreturn = new List<string>();
foreach (var a in fun(n - 1,myst))
{
for (int i = a.LastIndexOf(',') + 1; i <a.Length-1; i++)
{
string retu = a.Insert(i+1 , ",");
myreturn.Add(retu);
}
}
return myreturn;//用A 或者BB 替换编译试下
// A:return myreturn.AddRange(fun(n - 1, myst).ToArray());
//B: myreturn.AddRange(fun(n - 1, myst).ToArray());
// return myreturn;
}
if (n == 1)
{ List<string> myresult = new List<string>();
for (int i = 1; i < myst.Length-1; i++)
{
string result = myst.Insert(i, ",");
myresult.Add(result);
}
return myresult;
}
else
return null;
}情况A 编译无法通过 情况B 顺利通过,结果也正确 ??????? 这是为什么啊?????????
{
string myst = "ABCDEF";
List<string> myresult = new List<string>();
for (int i = 1; i < myst.Length; i++)
{
myresult.AddRange(fun(i, myst).ToArray());
}
foreach (var a in myresult)
{
Console.WriteLine(a);
} Console.ReadLine();
}
public static List<string> fun(int n,string myst)
{
if (n > 1)
{
List<string> myreturn = new List<string>();
foreach (var a in fun(n - 1,myst))
{
for (int i = a.LastIndexOf(',') + 1; i <a.Length-1; i++)
{
string retu = a.Insert(i+1 , ",");
myreturn.Add(retu);
}
}
return myreturn;//用A 或者BB 替换编译试下
// A:return myreturn.AddRange(fun(n - 1, myst).ToArray());
//B: myreturn.AddRange(fun(n - 1, myst).ToArray());
// return myreturn;
}
if (n == 1)
{ List<string> myresult = new List<string>();
for (int i = 1; i < myst.Length-1; i++)
{
string result = myst.Insert(i, ",");
myresult.Add(result);
}
return myresult;
}
else
return null;
}情况A 编译无法通过 情况B 顺利通过,结果也正确 ??????? 这是为什么啊?????????
//B: myreturn.AddRange(fun(n - 1, myst).ToArray());myreturn.AddRange(fun(n - 1, myst).ToArray());
返回的是一个方法AddRange 这个方法的返回值。。你直接把这个返回值返回了。。你说能通过么?
返回值是void,方法的返回值是string
string=void?
myreturn.AddRange 返回的是VOID,所以报错。