程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 函數----Beginning Visual C#,

函數----Beginning Visual C#,

編輯:C#入門知識

函數----Beginning Visual C#,


更多相關文章,見本人的個人主頁:zhongxiewei.com

當函數傳遞參數通過引用方式傳遞的時候,語法有所不同

// in cpp
void doubleVal(int &val) {
    // ...
}

int main() {
    int val = 20;
    doubleVal(val);
    cout << val << endl; // output: 40
}
// in c sharp
static void doubleVal(ref int val) // 使用ref進行標識
{
    val *= 2;    
}

static void Main(string[] args)
{
    int val = 20;
    doubleVal(ref val);
    Console.WriteLine(val); // output: 40
}

out 關鍵字,在c++中沒有相似的關鍵字或用法 out 關鍵字的使用方式和ref類似,但有兩點不同,1)在使用ref參數的時候,傳遞沒有賦值的參數是不合法的。無法通過編譯。但是在使用out參數的時候是合法的。2)並且使用out參數的時候,該參數被當作沒有賦值的,對該值的調用會發生編譯錯誤。如下:

static void doubleVal(out int val)
{
    val *= 2;   // 想要使用val中的數值,
                // 但是val被認為是沒有賦值的,因此出現編譯錯誤 
}

static void Main(string[] args)
{
    int val=3;
    doubleVal(out val);
    Console.WriteLine(val); // output: 40
}

對於不定量參數輸入的關鍵字為:param,具體實現如下:

static int sum(param int[] num) // 這裡需要注意的是,param參數必須在參數列表的最後的位置
{
    int sumVal = 0;
    foreach (int n in num)
    {
        sum += n;
    }
    return sum;
}

在c#中對變量作用域的檢測更加的嚴格,比如類似下面的代碼能夠在c++中編譯通過並成功運行,而在c#中則無法通過編譯,由於在同一個作用域中調用了沒有初始化的變量。

string text;
for (int i=0; i<1; i++)
{
    text = "hello";
}
Console.WriteLine(text); // in cpp: cout << text << endl;

函數重載和c++中的類似,但是由於c#中對於“引用”,引入了ref關鍵字,因此,對於引用參數和非引用的參數的函數在c#中也能夠重載,這在c++中是不合理的。如:

// in c#
static void showDouble(ref int val) {}
static void showDouble(int val) {}

// in cpp is error
void showDouble(int &val) {}
void showDouble(int val) {}

在c#中關於函數,還有delegate關鍵字,該關鍵字的含義用來創建一個能夠用來表示其他函數的東東。這有點像c中的指針函數。如:

// in c#
delegate double processDelegate(double param1, double param2);
static double Multiply(double param1, double param2)
{
    return param1 * param2;
}

static double Divide(double param1, double param2)
{
    return param1 / param2;
}

static void Main(string[] args)
{
    processDelegate process;
    process = new processDelegate(Multiply);
    Console.WriteLine("{0}", process(3, 4));
    process = new processDelegate(Divide);
    Console.WriteLine("{0}", process(3, 4));
}
// in cpp
#include <iostream>

using namespace std;

int multi(int a, int b) {
    return a * b;
}

int add(int a, int b) {
    return a + b;
}
int main() {
    int (*fn)(int,int);
    
    fn = multi;
    cout << "multi " << fn(2,3) << endl;
    fn = add;
    cout << "add " << add(2,3) << endl;
}

microsoft visual c 60中函數放在哪個文件夾

包含文件在
C:\Program Files\Microsoft Visual Studio\VC98\Include
 

microsoft visual c ++環境下使用c語言,調用函數好像不行,救命

#include<stdio.h>
int main(void)
{
float a, b;
float c, f(float x, float y); //注意這樣定義

a = 3; b = 4;

c = f(a, b);
printf("%f\n", c);
}

float f(float x, float y)
{
float h;
h = x + y;
return h;
}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved