第5章 方法

2021-07-22 02:41:54 字數 1843 閱讀 3166

方法的結構

方法是一塊具有名稱的**。可以使用方法的名稱從別的地方執行**,也可以把資料傳入方法並接受資料輸出。

方法是類的函式成員。方法有兩個主要部分,方法頭和方法體。

方法頭指定方法的特徵,包括:

★ 方法是否返回資料,如果返回,返回什麼型別;

★ 方法的名稱;

★ 哪種型別的資料可以傳遞給方法或從方法返回,以及應如何處理這些資料。

方法體內部的**執行

方法體是乙個塊,是大括號括起的語句序列。塊可以包含以下專案:

★ 本地變數;

★ 控制流結構;

★ 方法呼叫;

★ 內嵌的塊。

本地變數

和字段一樣,本地變數也儲存資料。字段通常儲存和物件狀態有關的資料,而建立本地變數經常是儲存本地或臨時的計算資料。

本地變數的存在性和生存期僅限於建立它的塊及其內嵌的塊。

★ 它從宣告它的那一點開始存在。

★ 它在塊完成執行時結束存在。

可以在方法體內任意位置宣告本地變數,但必須在使用它們前宣告。

型別推斷和var關鍵字

var關鍵字並不是特定型別變數的符號。它只是句法上的速記,表示任何可以從初始化語句的右邊推斷出的型別。使用顯式型別名的**片段和使用var關鍵字的**片段在語義上是等價的。

使用var關鍵字有一些重要的條件:

★ 只能用於本地變數,不能用於字段;

★ 只能在變數宣告中包含初始化時使用;

一旦編譯器推斷出變數的型別,它就是固定且不能更改的。var關鍵字並不改變c#的強型別性質,且不會損失效率。

在c和c++中,可以先宣告乙個本地變數,然後在巢狀塊中宣告另乙個相同名稱的本地變數。在內部範圍,內部名稱掩蓋了外部名稱。然而,在c#中不管巢狀的級別如何,都不能在第乙個名稱的有效範圍內宣告另乙個同名的本地變數。

本地常量

引數 ★值引數,使用值引數,通過將實參的值複製到形參的方式把資料傳遞給方法。方法被呼叫時,系統做如下操作。

在棧中為形參分配空間。

將實參的值複製給形參。

注意:值型別和值引數是兩個完全不同的概念。值型別就是指型別本身包含其值,值引數是把實參的值複製給形參。

★引用引數

使用引用引數時,必須在方法的宣告和呼叫中都使用ref修飾符。

實參必須是變數,在用作實參前必須被賦值。如果是引用型別變數,可以賦值為乙個引用或null。

在之前的內容中我們已經認識到了,對於值引數,系統在棧上為形參分配記憶體,相反,引用引數具有以下特徵。

不會為形參在棧上分配記憶體。

實際情況是,形參的引數名將作為實參變數的別名,指向相同的記憶體位置。

由於形參名和實參名的行為就好像指向相同的記憶體位置,所以在方法的執行過程中對形參作用的任何改變在方法完成後依然有效(表現在實參變數上)。

引用型別作為值引數和引用引數

遞迴 除了呼叫其他方法,方法也可以呼叫自身。這叫做遞迴。

遞迴會產生很優雅的**,呼叫方法自身的機制和呼叫其他方法其實是完全一樣的。都是為每一次方法呼叫把新的棧楨壓入棧頂。隨著遞迴越來越深,棧也越來越大。

5 第 5 章 迴圈

1.可以用迴圈來驗證輸入。在迴圈前的第一次讀取操作,稱為啟動讀取,如果後續還需要繼續讀取,則語句應該在迴圈中。2.在實際程式設計應用中,不建議在 cout 語句中放置遞增或遞減運算子 因為容易出錯 3.需要計數時使用計數器,需要累計彙總時使用累加器。4.標記符號是乙個特殊值,指示著值列表的結尾。一般...

第5章 雜湊

5.1 一般想法 雜湊主要需要解決衝突發生時如何處理 5.2 雜湊函式 對於關鍵字為字串時,若將字串所有的字元相加得到雜湊值,則對於大表而言,其值過小,使關鍵字集中於表的前面,分布不均。若只是取前面少數字元構造多項式,則實際組合數過少,對於大表的利用率低。最好的方法是對字串的所有字元均使用多項式,提...

第5章 陣列

一 認識陣列 傳統上把陣列 array 定義為一組有某種共同特性的元素,包括相似性和型別。每個元素由乙個特殊的識別符號來區分,稱之為鍵 key 而每個鍵對應乙個值 value usernames array 李彥巨集 馬雲 馬化騰 定義乙個陣列 預設情況下以數字作為索引的鍵名 從0開始 userna...