L'équivalent de “Dim as String * 1” VB6 à VB.NET

J'ai quelques VB6 code qui doit être migré vers VB.NET et je voulais savoir à propos de cette ligne de code, et de voir si il y a un moyen de la mettre en œuvre .NET

Dim strChar1 As String * 1

Intellisense continue à me dire qu'une fin de déclaration est attendu.

Ce que vous avez là est une chaîne de longueur fixe. Comment déclarer un dans VB.NET est discuté here.
J'ai vu ça aussi, mais personnellement, je serais timide loin de VBFixedStringAttribute. C'est l'une des nombreuses choses dans le Microsoft.VisualBasic espace de noms a été un report de VB6 à faire de la conversion à VB.NET plus facile quand .NET premier est sorti, mais à mon humble avis, il est presque toujours préférable d'éviter la plupart des choses dans cet espace de noms et d'opter pour l'équivalent de la "norme" .NET Framework à la place. Je veux dire, ils ont même gardé l'ancienne VB6 erreur de manipulation de modèle avec On Error, Goto et Resume, même si des exceptions sont prévues (et plus puissants) façon de gérer les erreurs .NET code 😉
Je n'ai pas vraiment regardé dans le VBFixedStringAttribute classe afin de déterminer si elle est une mauvaise idée ou pas, mais je crois que cette question est un dupe de celui que j'ai lié. Je pense aussi que votre réponse est mieux que ceux qui s'y trouvent, donc +1 pour vous. (et bien sûr je suis d'accord avec vous que l'utilisation de l'ancien VB6 style de gestion d'erreur est de mauvais choix dans un VB.NET app!)
Pourquoi éviter que l'espace de noms? C'est juste une .Net de l'assemblée, comme les autres! C'est une partie de VB et il n'y a aucune raison de ne pas l'utiliser. Il ne va pas loin. Maintenant Microsoft.VisualBasic.La compatibilité de l'assemblée est celui à éviter, cependant.
Vrai, Microsoft.VisualBasic.Compatibility est bien pire, mais le Microsoft.VisualBasic espace de noms peut causer des maux de tête. Une partie du problème est qu'il est conçu pour fonctionner de façon similaire à VB6 qu'il devient confus quand il ne fait pas travailler de la même façon. Par exemple, ils ont même re-mise en œuvre de la plupart des VB6 date et l'heure de fonctions (comme DateSerial et amis), même si l' .NET framework a déjà des classes de faire toutes ces choses. Un autre exemple: il est source de confusion lorsque la moitié du code, utilise le style ancien ErrObject et la moitié utilise .NET des exceptions, par exemple.

OriginalL'auteur Logan B. Lehman | 2012-03-06