【问题标题】:Parse a list to a string将列表解析为字符串
【发布时间】:2011-09-19 07:20:48
【问题描述】:

也许我太聪明了,但我有一个方法可以遍历一个可枚举的 List(Collections) 并将其作为............可枚举的 List(Sparkles) 返回。

我想将第一个列表(Collections)包含在一个处理验证和各种其他职责的类中,否则我会直接处理 Collections。

我很确定这听起来比我应该做的更难。因此该类通过一个名为 getSparkles() 的方法返回一个列表(Sparkles)。

我以为我是在做一个 foreach 正确的:

string msg;
List<string> layoutListNames = new List<string>();

foreach (string name in layoutList.getLayout());
{
     msg = "\n" + name;
}

然而,编译器不同意我的观点。

给我一​​个提示。我想学习。

编辑:对不起。 getLayout() 返回一个列表。我删除了分号。 哦/facepalm。

我在构造函数中写了这个来测试一个类,但忘记更改构造函数的名称以匹配类名。感谢您的快速响应。

【问题讨论】:

  • “编译器,然而,不同意我的观点”——你能不能说得更具体一点...
  • layoutList.getLayout() 返回什么?并且不知道您与编译器存在什么样的分歧,这有点难以帮助......
  • 编译器抱怨什么? layoutlist.getLayout() 是如何定义的?
  • layoutList是什么,getLayout方法是什么?编译器如何“不同意”您(错误消息)?
  • 除了上面的cmets,foreach (string name in layoutList.getLayout()) ;这里的分号是干什么的?

标签: c# string list foreach


【解决方案1】:

';' 出了什么问题在后面 foreach (layoutList.getLayout() 中的字符串名称) ;

删除它,编译器同意..

改进建议:

string msg = string.Join("\n", layoutListNames);

【讨论】:

  • 我会接受这个答案。从来不知道 String.Join 方法。
【解决方案2】:

一方面:您需要删除foreach 之后的;。否则,这将是一个空循环语句,并且不会在下面的块中声明 name

【讨论】:

    【解决方案3】:

    然后再试一次...

        static void Main(string[] args)
        {
            string msg = null;
            List<string> layoutListNames = new List<string>() { "test1","test2"};
    
            foreach (string name in layoutListNames)
            {
                if (msg != null) msg += "\n";
                msg += name;
            }
    
            Console.WriteLine("at 1:" + msg);
    
            msg = string.Join("\n", layoutListNames.ToArray());
    
            Console.WriteLine("at 2:" + msg);
    
            Console.Read();
        }
    

    【讨论】:

    • 再次,在 foreach 末尾仍然包含错误的 ;,因此不会编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2020-07-10
    • 1970-01-01
    • 2016-02-21
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多