I've used an Enum for things like a MailType where the values could be Daily, Weekly, Monthly and then compared the ToString() of that enum with the string value that was passed to the function. It might not be as effecient as other ways of doing it but it does make the code readable and easily to understand. I also removed a sh*t load of magic strings with the nameof(Classname.PropertyName). That wasn't as easy to read afterwards but made it much easier to refactor the class later on.
Definitely Enum or Int, much faster on the CPU. A bad example of everything(!) being a string is the "yandere simulator code meme", which is horrible to maintain. Luckily the CLR interns constant strings and compares the string address before comparing the value, thus speeds things up.