●值引數 :乙個值引數相當於乙個區域性變數,當使用值引數的時候,將會分配乙個新的儲存位置,將實參拷貝到該位置,並將該拷貝值傳遞給該方法。因此,值引數只能將值帶進方法,但是不能帶出方法,而不會影響實參的值。
●引用引數:當使用引用引數的時候,將不會分配乙個新的儲存位置,in other words,引用引數能將值帶進方法,也能帶出方法,因而會影響實參的值。如下例:
using system;
namespace prg1
//引用引數使用演示
static void transposition_2(ref int a,ref int b)
static void main(string args)
,b=",a,b);
transposition_1(a,b);
console.writeline("呼叫transposition_1之後a=,b=", a, b);
console.writeline("********************\n");
//呼叫transposition_2
console.writeline("呼叫transposition_2之前a=,b=", a, b);
transposition_2(ref a,ref b);
console.writeline("呼叫transposition_2之後a=,b=", a, b);
console.writeline("********************\n");
console.readkey();}}}
●輸出引數:根據表層含義猜測其只能輸出不能輸入方法的引數,我們開始緊隨上例驗證一下,加入以下**:程式設計客棧
static void transposition_2(ref int a,ref int b)
編譯器便會提醒a,b未賦值的報錯,同樣我們也就可以直觀的看到,輸出引數不能將值帶進方法,只能將值輸出方法。從下面的例子中可以看出在方法的內部進行了輸出引數的賦值操作,因此無論在**使用輸出引數都必須提前賦值,這也是使用任何型別引數的共性。
//use of output parameters
static void transposition_3(string name,out string fistname,out string lastname)
i--;
}fistname = name.substring(0,i-1);
lastname = name.substring(i);
}//呼叫transposition_3
string doname,nmark;
transposition_3("rohelm.x",out doname,out nmark);
console.writeline("domain name of myself: mosaj",doname);
console.writeline("the last name of my domain name: ",nmark);
●引數陣列:簡而言之,就是方法傳遞的單位是個陣列,而且可以是一維陣列或者交錯陣列(形如int),但是不能是多維陣列(形如;string[,]),可以為引數陣列制定乙個或多個實參,其中每乙個實參都是乙個表示式,此外引數陣列和同一型別的值引數完全等效。例如下例:
class prmarry
", name.length);
console.write("elements of namearray:");
for (int i = 0; i < name.length; i++)
",name[i]);}}
}//呼叫show
string namearray = ;
prmarry.show(namearray);
console.readkey();
也不知咋搞的,我的輸入法和編譯器好像在玩***,一會不一會的就不支援漢字輸入了,我也真能用英語輸入了,無奈。
下面是這一日誌的參考原始碼,可以整體分析一下:
using system;
namespace prg1
//引用引數使用演示
static void transposition_2(ref int a,ref int b)
//use of output parameters
static void transposition_3(string name,out string fistname,out string lastname)
i--;
}fistname = name.substring(0, i - 1);
lastname = namosajme.substring(i);
}static void main(string args)
,b=",a,b);
transposition_1(a,b);
console.writeline("呼叫transposition_1之後a=,b=", a, b);
console.writeline("********************\n");
//呼叫transposition_2
console.writeline("呼叫transposition_2之前a=,b=", a, b);
transposition_2(ref a,ref b);
console.writeline("呼叫transposition_2之後a=,b=", a, b);
console.writeline("********************\n");
//呼叫transposition_3
string doname,nmark;
transposition_3("rohelm.x",out doname,out nmark);
console.writeli"domain name of myself: ",doname);
console.writeline("the last name of my domain name: "+"\n",nmark);
//呼叫show
string namearray = ;
prmarry.show(namearray);
console.readkey();
}} class prmarry
", name.length);
console.write("elements of namearray:");
for (int i = 0; i < name.length; i++)
",name[i]);}}
}}本文位址:
Python魔法方法詳解
據說,python 的物件天生擁有一些神奇的方法,它們總被雙下劃線所包圍,他們是物件導向的 python 的一切。他們是可以給你的類增加魔力的特殊方法,如果你的物件實現 過載 了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,你可以定義自己想要的行為,而這一切都是自動發生...
c 物件導向基礎 類 方法 方法過載
c 是純粹的物件導向程式設計語言,它真正體現了 一切皆為物件 的精神。在c 中,即使是最基本的資料型別,如int,double,bool型別,都屬於system.object object為所有型別的基類 型別。此外,使用c 程式設計,不會存在與游離於物件之外的屬於過程的東西。因此,學習c 就必須具...
python語法練習16 17 魔法方法
python 的物件天生擁有一些神奇的方法,它們總被雙下劃線所包圍,他們是物件導向的 python 的一切。他們是可以給你的類增加魔力的特殊方法,如果你的物件過載了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,你可以定義自己想要的行為,而這一切都是自動發生的。new c...