CompareOptionsの説明がドイヒー
書いていること守って組み合わせているのに、optionsの値がダメーというArgumentException が発生するので1つ1つ組み合わせたところ、ようやく理解。
まずCompareOptionsは以下の定義。ビットの組み合わせで指定できるとなっている。
[Flags] public enum CompareOptions { None = 0, IgnoreCase = 1, IgnoreNonSpace = 2, IgnoreSymbols = 4, IgnoreKanaType = 8, IgnoreWidth = 0x10, OrdinalIgnoreCase = 0x10000000, StringSort = 0x20000000, Ordinal = 0x40000000, }
しかし、なんでも組み合わせられるということではなかった。
まず、ベースとなる比較方法を、以下から選択する。
- None
- OrdinalIgnoreCase
- Ordinal
- StirngSort
そのベースに対して、他のIgnoreXXX フラグを Orできるということらしい。
私が例外を出していたのはOrdinalIgnoreCaseとStringSortを組み合わせていたからで、これはIgnoreCaseとStringSortを組み合わせれば事足りるということだった。