C#のメソッド呼び出しと試運転を定義します

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/qq_43425487/article/details/102752756

このセクションの内容

1.方法の原点。

2.定義と呼び出し方法。

3.ビルダー(特別な方法)。

過負荷(オーバーライド)の方法。

5.どのようにデバッグ方法へ。

呼び出しスタックに記載の方法*

*推奨図書:深さC#とC#のCLRを経由して、第3版

起源の1方法

①以前のC / C ++言語の機能(関数)として知られている方法(メソッド)は、

この方法は、オブジェクト指向領域の概念であり、まだ非オブジェクト指向言語での関数を呼び出しました。

あなたは比較を行うC / C ++言語を使用することができます。

*関数は、私たちの呼び出しそれメソッド(C ++で始まる)のメンバーとして表示されます

②メンバーの常にクラス(または構造)

これは、C#言語(または構造の外側)内のクラスから独立して機能することができません。

メソッドが呼び出されたクラス(または構造)のメンバーのみ。

C ++では、「グローバル関数」と呼ばれています。

③一つは、基本部材のクラス(構造)であります

フィールドとメソッド(メンバ変数とメンバメソッド)、またはデータ+アルゴリズムの本質 - 最も基本的な2つだけのメンバー

この方法は、「何もすることができます。」クラス(または構造)を表し

④なぜ我々はメソッドと関数が必要なのですか

目標1:構造の複雑さを隠します。

2目的:多重化(resue、リユース);

C ++中の#include

これは、標準ライブラリがある場合は、引用符でそれを定義した場合の#include「Student.hは」//、そして、角括弧を使用しています。

声明に記載の方法を呼び出します

詳細な方法文の構文①

(関係なく、家族の、宣言/定義)C#言語のドキュメントを参照してください。

パラメータは、「仮パラメータ」と呼ばれます。

仮パラメータ、「パラメータ」と呼ぶ:アルゴリズムアルゴリズムに関係するパラメータの形式で構成されたロジック(即ち、計算に関与する変数としてアルゴリズムで);

パラメータは変数です:可変パラメータフォーム;

②メソッドの命名規則:

ケース仕様:パスカルの法則(各単語の最初の文字を大文字)。

これは、名前のように動詞または動詞句である必要があります。

③レビュースタティック(静的)とインスタンスメソッド:静的メソッドは、クラスの一部であるが、ターゲット・クラスを呼び出すことができない、インスタンスメソッド(非静的メソッド)オブジェクトクラスに属するオブジェクトを呼び出すことができます。

④メソッドを呼び出します。括弧の後ろにメソッド名は省略できません。

パラメータである関数宣言「()」;関数呼び出し「()」の引数です。

「実際のパラメータ」「引数」として引数C#のドキュメントの公式中国語の翻訳は、呼び出し元のメソッドの真の状態を理解されています。

引数リストメソッドの定義の時間に合わせて、パラメータリストでメソッドを呼び出すときに、C#は強く型付けされた言語であり、引数が値、変数、パラメータ、変数の値(数とデータ型)であるか、エラーになります一致している必要があります。

3.コンストラクタ

コンストラクタ(コンストラクタ)タイプのメンバーです。

狭いコンストラクタは、「インスタンスコンストラクタ」(インスタンスconstractor)を意味します。

コンストラクタを呼び出す方法。

ステートメントのコンストラクタ。

メモリ原則、コンストラクタ。

コンストラクタは、アクションのインスタンス(オブジェクト)とクラスコンストラクタを初期化することです。

①あなたは、デフォルトのコンストラクタを呼び出す場合:

声明:学生STU =新しい学生();①

クラスの学生

{

公共int型のID。

公共の文字列の名前。

}

①*文が主な機能であるため、STU参照変数は、スタック内の空きメモリを割り当てられた最初の4バイトローカルである学生()を呼び出すことによって、クラスの生徒のインスタンスを作成する*新しい新しい演算子、デフォルトコンストラクタ、インスタンスインスタンスのデータ・ストレージ・スペースに含まれるメモリ空間のヒープメモリサイズ、(int型のID、4バイト、文字列NAME4バイト)で開いた8バイトのように割り当てられたメモリ空間、デフォルトコンストラクタは、暗黙的に0を割り当て、そうので、メモリ内のデータのブロックの初期値は0; *最後に、STU間スタックメモリ参照変数にコピーされた二進数に第1アドレスメモリ。

お問い合わせの際②コンストラクタは、パラメータがあります。

第一および第三のステップと同様の動作とデフォルトのコンストラクタを呼び出すときに、第二段階ことを除い。

場合パラメーター&数値型:このメモリヒープメモリ空間インスタンス、int型4バイトの最初の8バイトで、引数1に渡される(想定)1(に変換する置きますバイナリメモリの存在にバイナリ)。

&パラメータ参照型(クラス・タイプは、参照型を覚え通常れる):ストレージ・スペースの残りの4つのバイトは、(引数「it'OK」に渡されると仮定)、文字列型であります

文字列は、クラス型で、クラス型は参照型なので、唯一の参照変数内に格納され、この4バイトですが、また、引数「it'OK」を保存する場所を見つけるために、ヒープに行くので。それらへのバイナリデータの中に「it'sOK」文字列データにメモリ空間を見つけた後。(第一のバイナリ文字列型スタックメモリに最後のメモリアドレスが上記に従って存在します)

オーバーロードの方法(オーバーロード)

例えばオーバーロードメソッド呼び出しの①。

オーバーロードされた方法と②宣言

メソッドシグネチャ(メソッドのシグネチャ)、型パラメータ(遭遇する一般的な発話)メソッドの名前とその仮パラメータのそれぞれの数(順序は左から右へ)型及び種類(値、参照(REF)または出力(OUT))組成物。メソッドのシグネチャは、戻り値が含まれていません。(主にメソッド名とパラメータリストを表示するには)

;その仮パラメータ(順序は左から右へ)型及び種類(値、参照、または出力)は、組成物のそれぞれによって署名されたインスタンスコンストラクタ

(最終的にオーバーロード呼び出し)オーバーロード解決:場合に使用されるパラメータのリストおよび候補関数メンバーのセットを与えられたが、最高の関数呼び出しを実装するメンバーを選択します。

5.デバッグする方法の方法(コアスキル)

ブレークポイント(ブレークポイント)を設定します。

メソッド呼び出しを見たスタックを呼び出します。

ステップイン、ステップオーバー、ステップアウトを。

観察とローカル変数の変化。(ローカル変数は、窓を通して見ることができるマウスも可変で見ることができ、マウスを観察するために固定された変数に小さなウィンドウに配置することができます)

コールスタック(コールスタック)とスタックメモリとの間の関係:ストップ値があるまで、たとえば、再帰的、常にではない場合は、コールスタックは、今回メモリスタック占めバーストまで深く深くなり、自分自身を呼び出しますstackoverflowの(スタックオーバーフロー)

ステップイン(F11)(工程へ):入力方法、最も繊細なデバッグ・ツール

ステップオーバー(F10)(ステップオーバー):メソッドに直接ジャンプしないでください、比較的ラフないくつかのデバッグツールを

両方の一般的なを組み合わせるために使用する、F10の問題点は、ステップデバッグによる方法ステップに再びF11を使用する方法の広い範囲の最初の急速な調査があります。(F11慎重に捜査上の疑いバグ所)

ステップアウト(ジャンプ):クラスやメソッドの役割は、例えば、現在のメソッド呼び出しに(順番に)内部に1つの2,2 3呼び出しをブレークポイントコールをジャンプし、その後、最初のホッププレスシフトF11にブレークポイントを設定します2時まで、その後、3へのジャンプ。

*これらの3つの方法の統合使用は、私たちの強力なデバッグ機能になります。

6.呼び出し、スタックの方法

スタックメモリの割り当て方法は、とき①と呼ばれています

スタックフレームの解析(手順と呼ばれるスタックレイアウトの方法)の

*最小限に開発によって開発されたスタックメモリビット下位バイト上位バイトビットがオーバーフローするの後、

たとえば、C#の楽しさの主な機能の出力文は三つの方法、スタックメモリ内のスタックフレーム(スタックフレーム)と呼ばれるメモリを開くために呼び出され、mainメソッドを回し呼び出します。

その後、渡す; Console.WriteLineを(c.GetConeVolume(100、100)):呼び出し側が呼び出し先呼び出し先を呼び出し、発信者と呼ばれ、その後の質問は、このようなコールその他の機能などの主要機能である、呼び出し、呼び出している関係のアプローチを呼び出しますそれを管理するために機能する2つのパラメータ(100)、異なる言語で異なる規制が、C#は、標準C ++に基づいて、パラメータは、発信者(発信者)管によって所有され、ここでメインパイプです。スタックメモリに、それぞれ、開放空間パラメータは、それに押し込まれるパラメータの対応するタイプの大きさ、?異なる所定異なる言語は、C#がC ++最初の左と右に圧入パラメータを担当している人呼び出し人の規則に従う(スタックフレームがの主な機能である)積層フィルムメモリがメインチューブになるように、*最初のものであることは、メソッドの実行時ですオープン・メモリ・スタック・フレームスタック内、その後シートを含む方法内のデータをスタックメモリに押し込まれます。今でも(保存方法は、アドレスなどの値を返す)スタックフレームになりますメソッド内のローカル変数せずに、押し呼び出している人の原則に従って、法と呼ばれる、メソッドの戻り値は、CPUレジスタの存在(学校のコンパイルがありますそこに内部の)言及されています。

*戻り値は、対応するスタックフレーム(スタック・フレーム)を動作させる方法の完了後の結果空にされ、メモリ・スタック・フレーム内のコール・パラメータを使用せずに各機能(メソッド)の端部がクリアされます。(Lenovoは、コンパイル言語を押して開くことができます)

*異常なメソッドが呼び出されているので、これはまた、オーバーフローを説明するかもしれない、となっています

スタックフレーム、リターンの無い層を開き、対応するパラメータのみが「スタックオーバーフロー」によって引き起こされるオープンスペースに、スタックの最上部まで、スタックをプッシュしていないこれは、スタックオーバーフローの原理です。

おすすめ

転載: blog.csdn.net/qq_43425487/article/details/102752756