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 顺利通过,结果也正确 ???????   这是为什么啊?????????

解决方案 »

  1.   

    // A:return myreturn.AddRange(fun(n - 1, myst).ToArray());
     //B: myreturn.AddRange(fun(n - 1, myst).ToArray());myreturn.AddRange(fun(n - 1, myst).ToArray());
    返回的是一个方法AddRange 这个方法的返回值。。你直接把这个返回值返回了。。你说能通过么?
      

  2.   

    myreturn.AddRange(fun(n - 1, myst).ToArray())
    返回值是void,方法的返回值是string
    string=void?
      

  3.   

    你要返回的List<String>
    myreturn.AddRange 返回的是VOID,所以报错。
      

  4.   

    我都结贴 了?你们怎么可能没分????不给你们分我怎么结贴?yonglaixiazaide是25   hjywyj是15