Having this enum:
public enum Answers
{
Other,
Yes,
No
}
Any expected possibility can be added.
Also several enums can be created for various use cases.
Here Other
means not defined, not predicted, unknown, etc.
We can define this allotment/distribution/dispatch table:
using System;
using System.Collections.Generic;
readonly Dictionary<Answers, List<string>> AcceptedAnswers
= new Dictionary<Answers, List<string>>
{
{ Answers.Yes, new List<string> { "yes", "y", "yep", "yeah" } },
{ Answers.No, new List<string> { "no", "n", "nope", "nah" } }
};
Thus we can easily define synonyms for each enum value.
And we'll use it by defining this verification method:
Answers GetAnswer(string input)
{
foreach ( Answers item in Enum.GetValues(typeof(Answers)) )
if ( AcceptedAnswers.ContainsKey(item) )
if ( AcceptedAnswers[item].Contains(input) )
return item;
return Answers.Other;
}
Test
Console.WriteLine("Do you agree?");
var answer = GetAnswer(Console.ReadLine());
Console.WriteLine();
Console.WriteLine($"Your answer is: {answer}.");
Output
Do you agree?
yep
Your answer is: Yes.
Advanced usage
bool retry;
do
{
retry = false;
Console.WriteLine("Do you agree?");
var answer = GetAnswer(Console.ReadLine());
Console.WriteLine();
Console.WriteLine($"Your answer is: {answer}.");
switch ( answer )
{
case Answers.Yes:
// ...
break;
case Answers.No:
// ...
break;
default:
Console.WriteLine();
Console.WriteLine("I don't understand :(");
Console.WriteLine();
retry = true;
break;
}
}
while ( retry );
Do you agree?
I don't know
Your answer is: Other.
I don't understand :(
Do you agree?
yeah
Your answer is: Yes.
Please do not use goto more than once per century.
How to resolve this compilation error "Using unassigned local variable 'hak'" when using goto?