【问题标题】:C# VOID parameters (list of options)C# VOID 参数(选项列表)
【发布时间】:2014-09-11 10:37:53
【问题描述】:

我正在编写一个返回图像的函数。 输入参数是:

网址 * 宽度 * 高度 * 格式(图像类型)JPEG、PNG、BMP

  • 是可选的。

我的问题是我不想将“格式”设置为字符串,然后在其上使用开关盒。

我想在函数中声明JPEG、PNG、BMP是你可以选择的,没有别的!

我找到了一个示例,您可以在其中使用 ENUM 创建一个类并将您的选项放在那里。然后将其添加到函数中作为参考。

但是我很确定我已经读过您可以将选项值直接放入函数中而无需使用类,那么如果可以吗?你是怎么做到的?

【问题讨论】:

  • 所以你基本上想要一个像枚举但不是枚举的东西?
  • 您是在问“如何使用基于字符串的 case 子句编写 switch 语句?”。如果是这样,请阅读此msdn.microsoft.com/en-GB/library/06tc147t.aspx
  • 香草枚举有什么问题?这几乎正​​是他们的目的

标签: c# function void


【解决方案1】:

只需像这样声明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 而不是可空的 int (int?)。

【讨论】:

  • 既然宽度和高度应该是可选的,我应该让它们可以为空,而不是默认为 128。
  • 对我来说,它比值 128 更有意义。由于第一个输入参数是 URL,我假设默认值 null 表示代码使用源宽度和高度。但话又说回来,假设是......
  • @MarkO:用你的建议更新了答案。
  • 谢谢!将来这个搜索词是什么?
  • enum, optional parameters 我猜。
猜你喜欢
  • 1970-01-01
  • 2017-07-13
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 2012-02-03
  • 2018-02-20
相关资源
最近更新 更多