title: Benefits and drawbacks of using enum or string to represent object type
body: <p>I have a winform application in vb.net and am developing a Rock Paper Scissor game. </p>
  
  <p>I use enum in one place and string in another to represent some an weapon type as shown below: </p>
  
  <p><strong>ENUM example:</strong></p>
  
  <pre><code>    Imports RockPaperScissors.Weapon
  
      Public Class PlayerComputerRandom
      Inherits Player
  
      Private Enum weaponsList
          Rock
          Paper
          Scissors
      End Enum
  
      Public Overloads Sub pickWeapon()
  
          Dim randomChoice = New Random()
          Dim CompChoice As Integer = randomChoice.Next(0, [Enum].GetValues(GetType(weaponsList)).Length)
  
          If CompChoice = "0" Then
              pWeapon = New Rock()
  
          ElseIf CompChoice = "1" Then
              pWeapon = New Paper()
  
          Else
              pWeapon = New Scissors()
  
          End If
  
  
      End Sub
  
  End Class
  </code></pre>
  
  <p><strong>STRING example:</strong></p>
  
  <pre><code>Public Class Player
  
      Public pWeapon As Weapon
  
  
      Public Sub pickWeapon(ByVal WeaponType As String)
          If WeaponType = "Rock" Then
              pWeapon = New Rock()
  
          ElseIf WeaponType = "Paper" Then
              pWeapon = New Paper()
  
          Else
              pWeapon = New Scissors()
  
          End If
  
      End Sub
  
  End Class
  </code></pre>
  
  <p>Can you tell me the advantages and disadvantages of each approach? Im new to OOP and coding so I just want to what the issue is with this approach and what would be the better approach?</p>
  
  <p>Any help would be greatly appreciated.</p>
  
  <p>Many Thanks,</p>