یادداشت های یک برنامه نویس
دوستدار فرهنگ و هنر کهن ایرانی

توابع می توانند بدون ورودی و خروجی یا با هر یک از آن ها یا همزمان با هر دو باشند.

مثال زیر یک تابع بدون ورودی و خروجی است:

//C#.net:
void Print()
{
    MessageBox.Show("Hi!");
}

//Use:
Print();
'VB.NET:
Sub Print()
       MessageBox.Show("Hi!")
End Sub

'Use:
Print()

مثال زیر یک تابع بدون ورودی و به همراه خروجی است (خروجی تابع می تواند از هر نوعی باشد) :

//C#.net:
public string Print()
{
    return "Hi!";
}

//Use:
string Result = Print();
'VB.NET:
Function Print() As String
        Return "Hi!"
End Function

'Use:
Dim Result as String = Print()
//Output:
Result = "Hi!"

ورودی توابع انواع مختلفی دارد:

  •  By Value : در این حالت (که حالت پیشفرض است) پارامتر را به تابع میفرستید و تابع از آن استفاده می کند. پارامتر میتواند یک مقدار و یا یک متغیر از قبل مقدار دهی شده باشد و چنان چه یک متغیر باشد در صورتی که مقدار آن را داخل تابع تغییر دهید مقدار آن خارج از تابع تغییری نمی کند و در واقع به خود متغیر دسترسی ندارید و فقط مقدار را دریافت می کنید:
//C#.net:
public string Print(string FirstName, string LastName)
    {
        return "Hi " + FirstName + " " + LastName;
    }

// Use:
string LastName = "Hajivalie";
string Result = Print("Mohsen", LastName);
'VB.NET:
Function Print(ByVal FirstName As String, ByVal LastName As String) As String
      Return "Hi " & FirstName + " " + LastName
End Function

'Use:
Dim LastName As String = "Hajivalie"
Dim Result As String = Print("Mohsen", LastName)

//Output:
Result = "Hi Mohsen Hajivalie"
  •  By Refrence : در این حالت چنان چه یک متغیر را به توابع ارسال کنید به خود متغیر دسترسی دارید و با تغییر در مقدار متغیر، مقدار آن در خارج از تابع نیز تغییر می کند:
//C#.net:
public string Print(ref string Name)
{
   Name = "Mr " + Name;
   return "Hi " + Name;
}

// Use:
var string Name = "Erfan";
var Result = Print(ref Name);
'VB.NET:
Function Print(ByRef Name As String) As String
    Name = "Mr " + Name
    Return "Hi " & Name
End Function

'Use:
Dim Name As String = "Erfan"
Dim Result = Print(Name)
//Output:
Result = "Hi Mr Erfan"
Name = "Mr Erfan"
  • Optional : در این حالت فرستادن پارامتر به تابع اختیاری است و باید در تابع حتما مقدار پیش فرضی به این نوع پارامترها بدهیم:
//C#.net:
public string Print(string Name = "Erfan")
{
    return "Hi " + Name;
}

// Use:
var Result1 = Print();
var Result2 = Print("Mohsen");
'VB.NET:
Function Print(Optional Name As String = "Erfan") As String
    Return "Hi " & Name
End Function

'Use:
Dim Result1 = Print()
Dim Result2 = Print("Mohsen")
//Output:
Result1 = "Hi Erfan"
Result2 = "Hi Mohsen"
  • ParamArray: در این حالت تعداد پارامترهای تابع متغیر است و تابع میتواند از صفر تا بینهایت ورودی داشته باشد. هر تابع فقط یک ورودی از این نوع می تواند داشته باشد ولی می تواند انواع دیگری از پارامترها را نیز دریافت کند به شرط آنکه پارامتر ParamArray در انتها تعریف شود:
//C#.net:
public int Sum(params int[] Number)
{
   int Result = 0;
   foreach (var n in Number)
      Result += n;
   return Result;
}

// Use:
var Result = Sum(3, 7, 5);
'VB.NET:
Function Sum(ParamArray Number() As Integer) As Integer
    Dim Result As Integer = 0
    For Each n In Number
        Result += n
    Next
    Return Result
End Function

'Use:
 Dim Result = Sum(3, 7, 5)
//Output:
Result = 15

 

دیدگاه ها: ارسال دیدگاه