小编Ric*_*ich的帖子

避免在C#中使用goto语句

我不想使用某种goto语句,但我希望用户在执行默认情况时返回主菜单.怎么样??我知道这是一个简单的问题,但必定会有很多新手遇到非常相似的东西.

static void buycoffee()
{
    Double price = 0;
    int x = 0;
    while (x == 0)
    {
        Console.WriteLine("Pick a coffee Size");
        Console.WriteLine("1: Small");
        Console.WriteLine("2: Medium");
        Console.WriteLine("3: Large");
        int Size = int.Parse(Console.ReadLine());
        switch (Size)
        {
            case 1:
                price += 1.20;
                break;
            case 2:
                price += 1.70;
                break;
            case 3:
                price += 2.10;
                break;
            default:
                Console.WriteLine("This option does not exist");
                ///how to return to the main menu here
                break;
        }
        Console.WriteLine("Would you like to buy more coffee?");
        String Response = Console.ReadLine().ToUpper(); …
Run Code Online (Sandbox Code Playgroud)

c# goto

2
推荐指数
1
解决办法
408
查看次数

创建一个过程来减少C#中的冗余代码

当我单击Windows窗体上的复选框时,它会启用一个文本框并将光标置于其中以备输入.代码相对简单:

private void chkLatte_CheckedChanged(object sender, EventArgs e)
    {
        if(chkLatte.Checked)
        {
            txtLatte.Enabled = true;
            txtLatte.Focus();
        }
        else
        {
            txtLatte.Enabled = false;
            txtLatte.Text = "0";
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,这就是问题.我有很多这些复选框,所以我想要的是这样的:

 public void setCheckBox(string chkName, string txtName)
    {

        if (chkName.Checked)
        {
            txtName.Enabled = true;
            txtName.Focus();
        }
        else
        {
            txtName.Enabled = false;
            txtName.Text = "0";
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,我可以调用该方法并传递适当的参数,如下所示:

  private void chkMocha_CheckedChanged(object sender, EventArgs e)
    {
        setCheckBox(chkMocha,txtMocha);
    }
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用:.Checked .Enabled .Focus()等只能使用复选框对象,我将chkName定义为字符串

我应该如何重新编写程序setCheckBox来克服这个问题?

c#

2
推荐指数
1
解决办法
87
查看次数

无法从文件路径中删除双斜杠

我有一个应该播放音乐文件的子.我可以轻松找到MyDocuments.我甚至可以使用Path.Combine来连接字符串的其余部分.

完整路径应如下所示:

......文档\ JUKEBOX \迈克尔·杰克逊\ 01.wav

但我得到的是双斜线而不是单斜线

private static void playChoice(string band, int choice)
    {
        var myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        string filename = "0" + choice;
        string[] paths = { myDocs, "JukeBox", band, filename, ".wav" };
        var fullPath = Path.Combine(@paths);
        var player = new System.Media.SoundPlayer(fullPath);
        player.Play();
    }
Run Code Online (Sandbox Code Playgroud)

A)如何删除双斜杠,因为我的逐字说明符不起作用B)代码看起来很糟糕 - 是否有更好的方法 - 或者是否有人链接到有用的文献

c# filepath verbatim-string

-2
推荐指数
1
解决办法
652
查看次数

标签 统计

c# ×3

filepath ×1

goto ×1

verbatim-string ×1