2014-09-11 62 views
0

我正在写一个将返回图像的函数。 输入PARAMS是:C#VOID参数(选项列表)

URL *宽* 高度 *格式(IMAGETYPE)JPEG,PNG,BMP

  • 是可选的。

我遇到的问题是我不想让“Format”作为STRING,然后在其上使用开关盒。

我想声明它在JPEG,PNG,BMP是你可以选择的功能,没有别的!

我发现了一个exempel,你可以用ENUM创建一个类并把你的选项放在那里。你可以把它作为参考添加到函数中。

但我确定我已经阅读过,你可以直接在函数中放入选项值而不使用类,所以如果可能的话?你是怎样做的?

+1

所以你基本上想要像枚举但不枚举的东西? – Hristo 2014-09-11 10:40:44

+0

你问:“如何用基于字符串的case子句写一个switch staement?”。如果是这样读取这个http://msdn.microsoft.com/en-GB/library/06tc147t.aspx – 2014-09-11 10:41:19

+0

香草枚举怎么了?这跟 – 2014-09-11 10:41:40

回答

3

只是声明了一个enum这样的:

enum FileType 
{ JPEG, PNG, BMP } 

而且在你的方法使用它:

public void Method(string url = null 
        , int? width = null 
        , int? height = null 
        , FileType format = FileType.PNG 
       ) 
{ 
    // use a switch to check the value of format 
} 

作为奖励,你有你的可选字段,充满了默认值,如果没有提供。对于heightwidth,您可以从源图像中获取实际数据(如果有的话)。否则,我会让他们int,而不是可空intint?)。

+0

差不多,因为宽度和高度应该是可选的,所以我应该让它们为空,而不是默认为128. – MarkO 2014-09-11 10:44:28

+0

对我来说,它比128的值更有意义。由于第一个输入参数是一个URL,我假设一个默认值为null将代表使用源宽度和高度的代码。但是,再次,假设是...... – MarkO 2014-09-11 10:55:06

+0

@MarkO:用您的建议更新了答案。 – 2014-09-11 10:57:49