C#Case语句字符串或字符串

时间:2016-11-13 16:24:37

标签: c# switch-statement

switch (newButton.fileExtension)
            {
                case ".txt":
                    newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Text document.png");
                    break;
                case (".png") || (".jpg") || (".gif"):
                    newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project images\Picture document.png");
                    break;
                case ".doc":
                    newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Word Document.png");
                    break;
                default:
                    newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Unknown Document.png");
                    break;

            }

我想使用switch语句检查newButton文件类型是什么,但是c#不允许你做“string”|| “字符串”是否有解决方法,或者我应该使用If Else语句?

3 个答案:

答案 0 :(得分:5)

只需使用多个case语句,而不使用break

case ".png":
case ".jpg":
case ".gif":
    newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project images\Picture document.png");
    break;

答案 1 :(得分:3)

应该有效的一个可能是

switch (newButton.fileExtension)
        {
            case ".txt":
                newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Text document.png");
                break;
            case ".png":
            case ".jpg":
            case ".gif":
                newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project images\Picture document.png");
                break;
            case ".doc":
                newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Word Document.png");
                break;
            default:
                newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Unknown Document.png");
                break;

        }

答案 2 :(得分:0)

其他答案将帮助您实现您想要做的事情,但我想指出您可以采取的另一个方向。

我很确定这些按钮在点击时会做不同的事情,因为它们代表不同的文档类型。您可能在单击处理程序中有与该文档类型相关的代码,然后处理程序可能会调用其他一些方法,您需要根据文档类型执行代码的不同部分。

我将创建5个类:TextDocument,PictureDocument,WordDocument,DefaultDocument和BaseDocument。在BaseDocument中,您可以放置​​一个名为ImagePath的抽象属性和一个非抽象的DocumentImage属性,以及一个名为任何适合单击按钮时要执行的代码的抽象方法。继承类将提供路径并设置ImagePath属性。设置ImagePath属性后,可以创建Image对象并设置DocumentImage属性。

查找其他常用代码并继续将其推送到BaseDocument类。在最后,您将获得更少的重复代码,并且您将使每个文档类型的代码很好地分开。您还将拥有更清洁的设计。我现在没有时间,但如果您需要有关此方法的代码的帮助,请告诉我,我可以帮助您。