并非所有代码路径都返回一个值为啥我的 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 广播应用程序会发生这种情况的主要内容,如果未能解决你的问题,请参考以下文章