Length of a method in VB.NET
-
11-12-2019 - |
Question
How does VB.NET calculate the length of a method? How can I do this in C#?
This my 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
I converted into C# as follows:
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();
}
}
Solution
You are probably confused between the variable ZeroPad
and the method ZeroPad
. It is customary to write variable names with a lower case initial character, e.g. zeroPad
. To return a value from a method, use return
in C#. I'm not sure what the purpose is of your IsNumeric
subroutine or why you take value by reference, but your code in C# would be similar to:
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;
}
As you don't change the values of pNumber
or pLength
, you can pass them by value (ByVal
in Visual Basic). And knowing that both pNumber
and pLength
are integers, and therefore always numeric, your method could be shortened to the following:
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;
}
The .NET Framework's Base Class Libraries have a String.PadRight method that does exactly what you want if you specify '0'
as the value for paddingChar
.
OTHER TIPS
In C#, you don't assign to method name. Instead you use a "return" statement. Declare a variable:
string retVal;
And instead of
ZeroPad = some_value;
use:
retVal = some_value;
and at last return retVal:
return retVal;