From Enum.ToString:
If multiple enumeration members have the same underlying value and you
attempt to retrieve the string representation of an enumeration
member's name based on its underlying value, your code should not make
any assumptions about which name the method will return. For example,
the following enumeration defines two members, Shade.Gray and
Shade.Grey, that have the same underlying value.
Related: enum.ToString return wrong value?
So i would assign unique values if you wannt to rely on the name:
enum Myenum { hello = 1, world = 2, qiang = 3 }