私の同僚array.contains()
は、if
列挙型を評価するときにステートメントでを使用する必要があると言いました。
例a:
if (new[] { enumvalue.a, enumvalue.b, enumvalue.c }.Contains(x.some_enum_value))
{
do_something();
}
... vs例b:
if (x.some_enum_value == enumvalue.a || x.some_enum_value == enumvalue.b || x.some_enum_value == enumvalue.c)
{
do_something();
}
例bよりも例aをいつ使用する必要がありますか?
C#7.3で列挙型制約を使用する両方の長所
public static bool IsIn<TEnum>(this TEnum source, params TEnum[] list)
where TEnum : Enum
=> list.Contains(source);
またはあなたがする場合
public static bool IsIn<T>(this T source, params T[] list)
=> list.Contains(source);
使用法
var someEnum = MyEnum.Three;
if (someEnum.IsIn(MyEnum.One, MyEnum.Three))
{
Console.WriteLine();
}
var list = new[]
{
MyEnum.Three,
MyEnum.One
};
if (someEnum.IsIn(list))
{
Console.WriteLine();
}
注:要するに、あなたはあなたが最も好きなこと、そして最も維持しやすいこと、そしてあなたの上司が好きなことをするべきです。他のすべては主観的です
注2:唯一の利点は拡張メソッドの使用法であり、paramsキーワードを使用してパラメーターのリストを取得できます。そうでなければ、これにはあまり価値がありません
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加