并非所有代码路径都返回一个值为啥我的 HAM Shortwave 广播应用程序会发生这种情况

Posted

技术标签:

【中文标题】并非所有代码路径都返回一个值为啥我的 HAM Shortwave 广播应用程序会发生这种情况【英文标题】:Not all code paths return a value why is the happpening for my HAM Shortwave radio app并非所有代码路径都返回一个值为什么我的 HAM Shortwave 广播应用程序会发生这种情况 【发布时间】:2020-07-31 02:35:44 【问题描述】:

所以我正在用 C# 编写一个 Windows 控制台应用程序,供 Shortwave HAM Radio DX 爱好者在他们的桌面上查看 Number Station 和奇怪的广播时间。我使用 Visual Studio 社区版作为我的编译器。

编译器正在返回这些错误:

这个应用程序的工作原理是通过连接到 priyom.orgs IRC 频道,然后用户可以使用 !n 命令查找下一个广播的电台。但我找不到没有返回什么值: enter image description here

  [1]: https://i.stack.imgur.com/gguPR.png
Here is the code:

   
using System;
using System.IO;
using System.Net.Sockets;
using System.Threading.Tasks;

namespace irc_bot

    class Program
    

        private const string server = "chat.freenode.net";
        private const string gecos = "Cerk";
        private const string nick = "Priyomwindowsapp";
        private const string ident = "Priyomwindowsapp";
        private const string channel = "#priyom";

        static string Main(string[] args)
        
            using (var client = new TcpClient())
            
                Console.WriteLine("Welcome to Numbers Station Finder. From here you can search for Number Station broadcast times and other shortwave / HAM radio oddities right from your Windows desktop. I will also present a link to navigate to in your web browser to listen in real time. For note, I use priyom.orgs IRC server. While on the IRC server you will have the nickname Priyomwindowsapp. To display the next signal to broadcast type !n. To search for a signal type !n space enigma ID (!n HM01 for example). Program C 2020 keifmeister.");

                Console.WriteLine($"Connecting to server");
                client.Connect(server, 6667);
                Console.WriteLine($"Connected: client.Connected");

                using (var stream = client.GetStream())
                using (var writer = new StreamWriter(stream))
                using (var reader = new StreamReader(stream))
                
                    writer.WriteLine($"USER ident * 8 gecos");
                    writer.WriteLine($"NICK nick");
                    // identify with the server so your bot can be an op on the channel
                    writer.WriteLine($"PRIVMSG NickServ :IDENTIFY nick");
                    writer.Flush();

                    while (client.Connected)
                    
                        var data = reader.ReadLine();

                        if (data != null)
                        
                            var d = data.Split(' ');
                            Console.WriteLine($"Data: data");

                            if (d[0] == "PING")
                            
                                writer.WriteLine("PONG");
                                writer.Flush();
                            

                            if (d.Length > 1)
                            

                                switch (d[1])
                                
                                    case "376":
                                    case "422":
                                        
                                            writer.WriteLine($"JOIN channel");

                                            // communicate with everyone on the channel as soon as the bot logs in
                                            Console.WriteLine("Enter username to be logged into:");
                                            string message = Convert.ToString(Console.ReadLine());
                                            writer.WriteLine(message);

                                            writer.Flush();
                                            break;
                                        
                                    case "PRIVMSG":
                                        
                                            if (d.Length > 2)
                                            
                                                if (d[2] == nick)
                                                
                                                    // someone sent a private message to the bot
                                                    var sender = data.Split('!')[0].Substring(1);
                                                    var message = data.Split(':')[2];
                                                    Console.WriteLine($"Message: message");
                                                    // handle all your bot logic here
                                                    writer.WriteLine($@"PRIVMSG sender : message");
                                                    writer.Flush();
                                                

                                            
                                            break;

                                        
                                
                            
                        
                    
                
            
        
    


    

感谢任何帮助。

enter image description here

【问题讨论】:

【参考方案1】:

您正在从您的Main 返回一个string,因此静态分析认为您想要返回一个结果。您可能确实想要:

static void Main(string[] args)

其他资源

Main() and command-line arguments (C# Programming Guide):

Main 可以有 void、int 或,从 C# 7.1 开始,Task 或 任务返回类型。

来自Hayden的值得评论:

还要确保您的项目输出类型是控制台应用程序 (在 Visual 中右键单击您的项目 > 属性 > 应用程序选项卡 工作室)。

【讨论】:

还要确保您的项目输出类型为Console Application(在 Visual Studio 中右键单击您的项目 > 属性 > 应用程序选项卡)。 这确实修复了该错误,但它仍在返回: @KeiferBly 你有什么,是一个真正的“另一个问题 @KeiferBly 在控制台关闭时返回?尝试在代码末尾添加 Console.ReadLine 行。 不,我解决了这个问题,但现在它正在接收没有要发送的文本的消息。奇怪.....

以上是关于并非所有代码路径都返回一个值为啥我的 HAM Shortwave 广播应用程序会发生这种情况的主要内容,如果未能解决你的问题,请参考以下文章

错误 CS0161 的原因:并非所有代码路径都返回值

方法错误“并非所有控制路径都返回值”和方法未返回值[关闭]

获取异常“并非所有代码路径都返回值”

如何解决 bool 方法上的“并非所有代码路径都返回值”?

并非所有控制路径都返回值

如何检查所有代码路径是不是返回值