关于 c# 中的 Cases 和 switches 我们真的需要它们吗?

About Cases and switches in c# do we really need them?

我刚刚用许多案例和开关编写了一个程序。那么在 C# 中有什么方法可以避免 Cases 和 Switches 吗?在我看来,我最终得到了一个 "messy" 程序。所有其他高级全栈开发人员,他们都说这很好等等。

但基本上我只是想知道你对这个主题的想法?您知道在没有 Cases 和 Switch 的情况下进行智能编码的更好方法吗?

基本上,质疑事物、现状是我的天性....

每个特定案例都需要自己的个人决定。在某些情况下,数百行看似虚拟的代码比使用递归、引用第 3 方、LINQ 等的漂亮的几行复杂逻辑更好地实现了目标。

但是谈到替代方案我可以推荐字典:

var switchCaseAlternative = new Dictionary<string, Action>() 
{
   {"case1", () => {System.Diagnostic.Debug.WriteLine("One");}},
   {"case2", () => {System.Diagnostic.Debug.WriteLine("Two");}}
};

那么使用说明将如下所示:

  switchCaseAlternative["case1"]();

您可以尝试使用 类 的继承。 Switch 意味着你需要用不同的值做一些类似的事情。希望下面的例子可以帮助理解我的想法:

public enum SexTypes { Unknown, Male, Female }

public abstract class Human
{
    protected string HelloMessage = "common message part";
    public abstract SexTypes Sex { get; }

    public void SayHello() => Console.WriteLine(HelloMessage); //good way

    public void SayHelloWithSwitch() //bad way
    {
        switch(Sex)
        {
            case SexTypes.Unknown:
                Console.WriteLine(HelloMessage);
                break;
            case SexTypes.Male:
                Console.WriteLine(HelloMessage + " some modifications");
                break;
            case SexTypes.Female:
                Console.WriteLine("new other message");
                break;
            default:
                throw new ArgumentOutOfRangeException();
        }
    }
}

public class Boy : Human
{
    public override SexTypes Sex => SexTypes.Male;
    protected new string HelloMessage => base.HelloMessage += " , some message modifications";
}

public class Girl : Human
{
    public override SexTypes Sex => SexTypes.Female;
    protected new string HelloMessage = "overwrite all message";
}