Longueur d'une méthode dans VB.NET
-
11-12-2019 - |
Question
Comment VB.NET calcule-t-il la longueur d’une méthode ?Comment puis-je faire cela en C# ?
C'est mon VB.NET code:
Private Function ZeroPad(ByRef pNumber As Integer, ByRef pLength As Integer) As String
Dim Padding As Object
If IsNumeric(pNumber) And IsNumeric(pLength) Then
Padding = New String("0", pLength)
ZeroPad = Padding & CStr(pNumber)
ZeroPad = Right(ZeroPad, pLength)
Else
ZeroPad = CStr(pNumber)
End If
End Function
J'ai converti en C# comme suit :
private string ZeroPad(ref int pNumber, ref int pLength) {
object Padding;
if ((IsNumeric(pNumber) && IsNumeric(pLength))) {
Padding = new string("0", pLength);
return (Padding + pNumber.ToString());
ZeroPad = ZeroPad.Substring((ZeroPad.Length - pLength));
// In the above line, how can I take the length of a method in C#?
}
else {
return pNumber.ToString();
}
}
La solution
Vous êtes probablement confus entre la variable ZeroPad
et la méthode ZeroPad
.Il est d'usage d'écrire les noms de variables avec un caractère initial minuscule, par ex. zeroPad
.Pour renvoyer une valeur à partir d'une méthode, utilisez return
en C#.Je ne sais pas quel est le but de votre IsNumeric
sous-programme ou pourquoi vous prenez la valeur par référence, mais votre code en C# serait similaire à :
private string ZeroPad(ref int pNumber, ref int pLength)
{
string padding;
string zeroPad;
if ((IsNumeric(pNumber) && IsNumeric(pLength)))
{
padding = new string('0', pLength);
zeroPad = (padding + pNumber.ToString());
zeroPad = zeroPad.Substring((zeroPad.Length - pLength));
}
else
{
zeroPad = pNumber.ToString();
}
return zeroPad;
}
Comme vous ne modifiez pas les valeurs de pNumber
ou pLength
, vous pouvez les transmettre par valeur (ByVal
en Visual Basic).Et sachant que les deux pNumber
et pLength
sont des entiers, et donc toujours numériques, votre méthode pourrait être raccourcie comme suit :
private string ZeroPad(int pNumber, int pLength)
{
string zeroPad;
string padding = new string('0', pLength);
zeroPad = (padding + pNumber.ToString());
zeroPad = zeroPad.Substring(zeroPad.Length - pLength);
return zeroPad;
}
Les bibliothèques de classes de base du .NET Framework ont un String.PadRight méthode qui fait exactement ce que vous voulez si vous spécifiez '0'
comme valeur pour paddingChar
.
Autres conseils
en C #, vous n'abandonnez pas au nom de la méthode.Au lieu de cela, vous utilisez une déclaration "retour".Déclarez une variable:
string retVal;
et au lieu de
ZeroPad = some_value;
Utilisation:
retVal = some_value;
et au dernier retour Reval:
return retVal;