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();
    }
}
Était-ce utile?

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;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top