使用GOTO在两种情况之间切换

问题描述 投票:0回答:1

我想使用goto在2个案例之间切换(当案例1运行时,转到案例2,然后当案例2运行时,再次转到案例1,依此类推)但在案例2之后,案例1不起作用。这是我的代码:

case 1:
    //Create a new picker
    FileOpenPicker filePicker = new FileOpenPicker();

    //Add filetype filters.  In this case wmv and mp4.
    filePicker.FileTypeFilter.Add(".wmv");
    filePicker.FileTypeFilter.Add(".mp4");

    filePicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;

    StorageFile file = await filePicker.PickSingleFileAsync();

    if (file != null)
    {
        mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(file);
        mediaPlayerElement.MediaPlayer.Play();
    }

    openButton.Content = "Close";
    break;
case 2:
    mediaPlayerElement.Source = null;
    openButton.Content = "Open";
    goto case 1;
c# uwp switch-statement goto
1个回答
0
投票

你应该总是避免使用gotos或你的代码将变得不可读。为此目的使用功能!

        switch (i)
        {
            case 1:
                closeToOpen();
                openToClose();

                break;
            case 2:
                openToClose();
                closeToOpen();
        default:
                break;
        }
    }

    void openToClose()
    {
        mediaPlayerElement.Source = null;
        openButton.Content = "Open";
    }

    void closeToOpen()
    {
        FileOpenPicker filePicker = new FileOpenPicker();

        //Add filetype filters.  In this case wmv and mp4.
        filePicker.FileTypeFilter.Add(".wmv");
        filePicker.FileTypeFilter.Add(".mp4");

        filePicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;

        StorageFile file = await filePicker.PickSingleFileAsync();

        if (file != null)
        {
            mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(file);
            mediaPlayerElement.MediaPlayer.Play();
        }

        openButton.Content = "Close";
    }

不确定这是否正是你想要实现的,但如果不是用它作为指南!

© www.soinside.com 2019 - 2024. All rights reserved.