ToString
est juste une méthode Overridable régulière définie par la classe de base Object
. Par conséquent, vous pouvez facilement l'ignorer pour le rendre ce que vous voulez. Par exemple:
Public Class Rock
Public Overrides Function ToString() As String
Return "Rock"
End Function
End Class
Ou, si vous voulez forcer vos classes à mettre en œuvre, vous pouvez le faire dans votre base Weapon
classe, comme ceci:
Public Class Weapon
Public Sub New(weaponName As String)
_weaponName = weaponName
End Sub
Private _weaponName As String
Public Overrides Function ToString() As String
Return _weaponName
End Function
End Class
Public Class Rock
Inherits Weapon
Public Sub New()
MyBase.New("Rock")
End Sub
End Class
Sinon, si vous ne le faites pas Si vous voulez l'exiger dans le constructeur, vous pouvez ajouter un MustOverride Function GetWeaponName() As String
protégé dans votre classe de base, puis le renvoyer de ToString
. De toute façon, les classes dérivées seront forcées de fournir le nom afin qu'il puisse être retourné dans ToString
.
La raison pour laquelle je recommande de le faire est que je suppose que vous utilisez cette chaîne comme description qui est affichée à l'utilisateur. Si c'est le cas, ce n'est pas vraiment le nom de classe que vous voulez, mais une description de l'arme. Jusqu'à présent, ils sont exactement les mêmes, mais logiquement, ce n'est pas toujours le cas. Par exemple, si vous avez une classe appelée SuperDuperRock
, vous ne voudrez pas l'afficher comme ça à l'utilisateur. Au contraire, vous voudriez qu'il soit correctement formaté avec des espaces entre les mots.