Domanda

In che modo vb.net calcola la lunghezza di un metodo?Come posso farlo in c #?

Questo my vb.net Codice:

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
.

Ho convertito in C # come segue:

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();
    }
}
.

È stato utile?

Soluzione

Probabilmente si è confuso tra la variabile ZeroPad e il metodo ZeroPad. È consuetudine scrivere nomi variabili con un carattere iniziale minuscolo, ad es. zeroPad. Per restituire un valore da un metodo, utilizzare return in C #. Non sono sicuro di quale sia lo scopo della tua subroutine IsNumeric o perché prendi valore per riferimento, ma il tuo codice in C # sarebbe simile a:

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;
}
.

Poiché non si modifica i valori di pNumber o pLength, è possibile passarli per valore (ByVal in Visual Basic). E sapendo che sia pNumber che pLength sono numeri interi, e quindi sempre numerici, il tuo metodo potrebbe essere abbreviato a quanto segue:

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;
}
.

Le librerie di classe base .NET Framework hanno un string.padright Metodo che fa esattamente ciò che desideri se si specifica '0' come valore per paddingChar.

Altri suggerimenti

In C #, non si assegna al nome del metodo.Invece usi una dichiarazione "return".Dichiarare una variabile:

string retVal;
.

e invece di

ZeroPad = some_value;
.

Uso:

retVal = some_value;
.

e all'ultimo return retval:

return retVal;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top