在 C# 的 switch case 中使用未分配的变量

Use of unassigned variable in switch case in C#

我正在制作一个基本的聊天程序作为论文,我已经 运行 解决了这个问题。

正如你在图片上看到的,它在第 107 行给我一个未分配的变量错误,但之后它工作得很好(就像在第 125 行)。 switch case 总是从 case 1 开始,我在其中创建了一个名为 login 的新 UserLogin 表单。之后它决定是否应该转到案例 2 或案例 3。除了第 107 行之外,它们都没有任何未分配的变量错误。我真的不知道为什么会这样。

那是因为变量被赋值的唯一位置是 case 1。您需要在 switch 语句之外对其进行分配,因为 case 1 有可能永远不会执行,因此永远不会分配变量。

即使您知道在遇到 2 或 3 之前会遇到案例 1,编译器却不会。

您需要在 switch 块之前分配 login 一个值,即使它只是 null.

login = null;

switch (...)
{
    case 1:
        login = new UserLogin();
        ...

如果您知道自己 总是 首先遇到情况 1,请考虑在输入 switch 之前为登录分配一个新的 UserLogin声明。