В следующем коде C# cboRole возвращает Guid.Как использовать оператор switch с Guid?
Я пытаюсь использовать его в инструкции switch для выполнения некоторых действий.
cboRole может возвращать только 4 разных руководства, поэтому я считаю, что переключатель является хорошим вариантом для меня.
Дело в том, что все случаи игнорируются, и я всегда получаю действие по умолчанию. Когда я отлаживаю, я ясно вижу, что cboRole возвращает значение, как на следующем принт-экране.
Что такое правильный способ «сравнить» Guids в C# переключатель заявление
Код:
if (!cboRole.IsNull)
{
switch (cboRole.EditValue.ToStringEx())
{
case "532E8EED-9E72-42E0-871E-36470C1AE327":
param1 = "4E08BA7C-E81F-40AE-92F0-DF33A98DD0BB";
MessageBox.Show("It's working");
break;
case "FA7637E9-A9E4-4D57-A59B-80615424D27F":
param1 = "E540C382-F22C-4FE2-9068-1E10AA8DD076";
break;
case "2734CCD9-93E6-4A86-8B83-5EA9E62FA921":
param1 = "8A54F8D5-5B74-4B3F-A29A-D423AA8DD02E";
break;
default:
MessageBox.Show("Not Working");
break;
}
Я не знаю, где вы получаете свою функцию ToStringEx(), но простой ToString() в guid возвращает guid в нижнем регистре. просто используйте 'cboRole.EditValue.ToString(). ToUpper()' и вы должны быть хорошими. – igelineau
Не имеет значения, что такое 'EditValue', все, что имеет значение, является тем, что возвращается методом' ToStringEx() '. –
также вы должны подумать о создании констант со значимыми именами и сохранить в них свои GUID, а не просто использовать их в своем коммутаторе. 'const string MyGuidValue1 =" 532E8EED-9E72-42E0-871E-36470C1AE327 ";' – igelineau