问题 尝试做一个错误"dynamic" list

Adde87a

成员
已加入
2019年6月17日
留言内容
8
编程经验
Beginner
你好!

我在为绝对初学者准备的课程中,尝试学习C#我对Game maker语言有一点了解,所以我在这方面并不完全愚蠢..但是我现在有一些代码问题,我无法弄清楚我在做什么错。

这是我的代码

C#:
        static void Main(string[] args)
        {
            DateTime showTime = DateTime.Now;
            bool ProgramRun = true; // kör programmet
            string input = "";

            // skapar lista och rum för innehåll TITEL och INLÄGG
           string[] post = new string[2];
           post[0] = ""; // TITEL
           post[1] = ""; // INLÄGG      

            List<string[]> postBook = new List<string[]>(); // skapar en ny lista för att spara alla inlägg
            postBook.AddRange(post);

            // setup för meny
            bool option; // boolean för TryParse
            int menuChoose = 0; // variabel för menyval

            {
                while (ProgramRun)
                {                
                    {
                        // Skriv ut meny
                    
                        Console.WriteLine("\n\tVälkommen till loggboken 2019");
                        Thread.Sleep(100);
                        Console.WriteLine("[1] -  Lägg till logg");
                        Thread.Sleep(100);
                        Console.WriteLine("[2] -  Öppna logg");
                        Thread.Sleep(100);
                        Console.WriteLine("[3] -  Sök logg");
                        Thread.Sleep(100);
                        Console.WriteLine("[4] -  Avsluta");

                        option = int.TryParse(Console.ReadLine(), out menuChoose);
                    }
                    switch (menuChoose) // menyval
                    {
                        case 1:
                            Console.Write("Lägg till i loggen");

                            for (int i = 0; i < post.Length; i++)
                            {
                                input = Console.ReadLine() + showTime;
                                post[i] = input;
                            }
                            break;
                        case 2:
                            Console.Clear();
                            Console.WriteLine("Dina inlägg i loggboken är: ");
                            foreach (var i in postBook)
                            {
                                Console.WriteLine(i);
                            }
                            Console.WriteLine("-----");
                            break;
                        case 3:
                            Console.Write("Sök Loggen");
                            break;
                        case 4:
                            Console.WriteLine("Välkommen tillbaka ");
                            Thread.Sleep(1000);
                            Console.WriteLine("Ha en bra dag! ");
                            Thread.Sleep(500);
                            ProgramRun = false;
                            break;
                        default:
                            Console.Write("Please choose ");
                            break;
                    }
                }
            }
        }

我收到此错误...如果我理解我不喜欢该字符串,我会进行排序,但我对字符串和转换还不太满意。

严重性代码说明项目文件行抑制状态
错误CS1503参数1:无法从'string []'转换为'System.Collections.Generic.IEnumerable<string[]>'ExamProjekt C:\ Users \ Familjen Svensson \ source \ repos \ ExamProjekt \ ExamProjekt \ Program.cs 24有效


在此先感谢您的时间 !
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
我已经从您的代码中删除了不必要的行,以使其更具可读性,但是恐怕在执行此操作之前,我没有注意到突出显示了哪一行。您能否编辑代码段格式以再次突出显示相关行?将来请不要包含无关的代码和成行的空白行,因为这会使阅读代码变得更加困难。
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,612
地点
弗吉尼亚州切萨皮克
编程经验
10+
I think you meant to call postBook.Add() instead of postBook.AddRange().

When you declare a List<Foo>, it contains Foos. So when you call Add() on it, it expects you to pass in a single Foo. When you call AddRange(), it expects you to add in multiple Foos, so it tries to see if the parameter that is passed in can be enumerated to get many Foos.

In your code above, when you declared List<string[]>, it contains string arrays. So when you called AddRange() it was expecting to find multiple string arrays, but you only passed in a string array.

顺便说一句,以一种数组索引保存一件事的方式存储数据,而另一种索引保存另一件事的方式存储数据并不是使用面向对象语言进行处理的合适方法。您将声明一个类来持有这本书:
C#:
class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
}
和 then declare a List<Book>.
 

Adde87a

成员
已加入
2019年6月17日
留言内容
8
编程经验
Beginner
我已经从您的代码中删除了不必要的行,以使其更具可读性,但是恐怕在执行此操作之前,我没有注意到突出显示了哪一行。您能否编辑代码段格式以再次突出显示相关行?将来请不要包含无关的代码和成行的空白行,因为这会使阅读代码变得更加困难。
是第24行给了我错误 :)

Skickat从游戏本(7)通过Tapatalk玩
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
是第24行给了我错误 :)
是的,但是,正如我说的,我删除了一些行,因此您帖子中的第24行突出显示了,实际上并不是错误所在的行。无论如何,跳伞运动员似乎已经正确识别了该问题,因此我突出了指出的那一行,现在是第13行。
 
最佳 底部