只接受C#中某个方法的某些字符串

Jak*_*ndy 1 c# visual-studio

我在C#中创建了一个方法,如下所示

public static IEnumerable<User> QueryTheAD(string filter, string identifier) {
  if ( filter == "ANiceString" ) {
    // sexy code here
  }
}
Run Code Online (Sandbox Code Playgroud)

效果很好.但是,VS正确地表明并非所有代码路径都返回一个值.

因此,我可以指定过滤器只能是以下之一:

  • "导师"
  • "年"
  • "第二个名字"

ani*_*ine 14

也许你应该使用枚举而不是字符串?:)

enum filterEnum
{
   Tutor,
   Year,
   SecondName
}

public static IEnumerable<User> QueryTheAD(filterEnum filter, string identifier) 
Run Code Online (Sandbox Code Playgroud)

请享用 ;)

  • `enum`不会阻止没有名称传递给方法的值.因此,虽然"枚举"可能确实更合适,但它本身并不能解决问题. (2认同)

Thi*_*ter 7

ArgumentException如果传递了无效的字符串,请使用枚举或抛出.

虽然枚举只映射到数字,但是如果由于某种原因需要字符串名称,则可以始终具有从枚举值到字符串的映射.