Elegant way of converting between StringComparison and StringComparer?

前端 未结 5 1254
醉梦人生
醉梦人生 2021-01-18 02:49

Some .NET methods use StringComparison as parameter, some use StringComparer (often in form of IComparer). The difference is clear. Is there some elegant way how to get

5条回答
  •  醉酒成梦
    2021-01-18 03:20

    vb.net version based on accepted answer (and Option Infer Off):

    Dim map As New Dictionary(Of StringComparison, Func(Of StringComparer))() _
        From {
            {StringComparison.CurrentCulture, Function() StringComparer.CurrentCulture},
            {StringComparison.CurrentCultureIgnoreCase, Function() StringComparer.CurrentCultureIgnoreCase},
            {StringComparison.InvariantCulture, Function() StringComparer.InvariantCulture},
            {StringComparison.InvariantCultureIgnoreCase, Function() StringComparer.InvariantCultureIgnoreCase},
            {StringComparison.Ordinal, Function() StringComparer.Ordinal},
            {StringComparison.OrdinalIgnoreCase, Function() StringComparer.OrdinalIgnoreCase}
        }
    

    Usage:

    Dim comparer As StringComparer = map(comparison)()
    

提交回复
热议问题