This C#/WPF code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TestDict28342343
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Dictionary<string, string> variableNamesAndValues =
new Dictionary<string, string>(StringComparison.InvariantCultureIgnoreCase);
}
}
}
gives me the error:
The best overloaded method match for 'System.Collections.Generic.Dictionary.Dictionary(System.Collections.Generic.IDictionary)' has some invalid arguments
Yet I find this code example everywhere such as here and here.
How can I define a Dictionary whose keys are case-insensitve?
Dictionaries are case-sensitive by default - you don't need to do anything. Dictionary<string, string> myDict = new Dictionary<string, string>(); myDict. Add("A", "value1"); myDict.
Remarks. The key is handled in a case-insensitive manner; it is translated to lowercase before it is used.
In programming languagesSome programming languages are case-sensitive for their identifiers (C, C++, Java, C#, Verilog, Ruby, Python and Swift).
Dictionary Keys Are Case-Sensitive : Dictionary Key « Dictionary « Python.
You're trying to using StringComparison
, which is an enum. You should be using StringComparer.InvariantCultureIgnoreCase
instead - that's a property returning a StringComparer
, which implements IEqualityComparer<string>
. You'll then end up calling the Dictionary<,>
constructor overload accepting an IEqualityComparer<TKey>
which it can use to check for equality and generate hash codes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With