[基本]
(A)の簡単なプライベート、保護、公衆、内部アクセス修飾子。
- プライベート:クラスの缶アクセス内部プライベートメンバー。
(プライベートキーワードは、メンバーのアクセス修飾子です。プライベートアクセスは最低レベルへのアクセスを許可されている。唯一の民間メンバーが自分のクラスで宣言され、構造体がアクセス可能です。)
- 保護:クラスの内側と継承クラスのメンバーの保護がアクセスすることができます。
(保護されたキーワードは、メンバアクセス修飾子である。派生クラスで彼のクラスのメンバーを保護他の関連する保護されたアクセス修飾子と比較してアクセスしてアクセスすることができ、派生クラス型を介してアクセスする場合にのみ発生し、ベースクラス派生クラスで保護されたメンバーがアクセス可能です。)
- 公共:公共のメンバー、完全公開、アクセスなし。
(パブリック・キーワードは、アクセス修飾子の種類とタイプのメンバーである。公共のアクセスは最高レベルへのアクセスを許可されている。公共のメンバーへのアクセスに制限はありません。)
- 内部:それは同じ名前空間にアクセスすることができます。
(内部アクセス修飾キーを入力して、メンバーを入力することです。同じアセンブリ内のファイルのみが、内部型またはメンバーがアクセス可能です。)
(B)の書き換え(上書き)オーバーロードとの間の差
違い:
それは多型が、実行時に達成されるコンパイル時の多型を、実装されていることを除いて過負荷と書き換え方法は、マルチステート方法です。、異なるパラメータのリスト(異なる種類のパラメータとパラメータの異なる数または両方)過負荷であると考えられるが、同じ名前のメソッドがオーバーロードクラスで発生している場合、リライトは、子と親クラスとの間に生じます、サブクラスは、要件が親クラスに書き換えられオーバーライドするオーバーライドされたメソッドは、同じ引数リストを持っている、互換性の戻り値の型は、親よりもオーバーライドされたメソッドのより良いアクセスである必要があり、より多くの親クラスよりもオーバーライドされたメソッドの宣言することはできません異常(リヒター置換原則)。過負荷戻り値の型のための特別な要件は、それが戻り値の種類に応じて区別することはできません。
すなわち、パラメータまたはパラメータの種類の数が同一でない、Aは、メソッドのオーバーロードメソッドは、同じ名前と同じクラスの複数を意味するが、これらの方法は、異なるパラメータリストを有します。
B、メソッドのオーバーライドは、同じ方法で、パラメータと同一の戻り型の同じリストを親クラス及びメソッド名に定義されたサブクラスサブ親クラスとの間に存在します。
注意:
最終の方法親クラス(1)サブクラスをオーバーライドすることはできません。
(2)メソッドサブクラス抽象親クラスを書き直さなければなりません。
ルールを書き換える方法:
1、パラメータリストは、メソッドとまったく同じである必要があり、上書きされ、それ以外の場合は、リライトする呼び出すことができませんでしたが、過負荷状態に。
2は、戻り値の型が返さなければならない方法の同じタイプが上書きされ、それ以外は過負荷に書き換えるために呼び出すことができませんでした。
3、制限されたアクセス修飾子は、アクセス修飾子が方法(パブリック>保護>デフォルト>プライベート)に書き換えられるよりも大きくなければなりません。
新しい異常や異常な比率を投げてはいけない4、オーバーライドメソッドはオーバーライドされたメソッドは、より広範な検査の種類を述べています。例えば:
親クラスのメソッドがチェック例外IOExceptionが、このメソッドを書き換える場合にのみチェックされない例外をスローする可能性は、IOExceptionのサブクラス異常を投げることができる、例外をスローしません宣言しました。
オーバーロードのルール:
あなたは、異なるパラメータリストを持っている必要があります。
パラメータリストが異なる可能性がある限り、戻り値の型が叱ることはできません。
あなたは、異なるアクセス修飾子を持つことができます。
あなたは別の例外をスローすることができます。
(C)バブルソートアルゴリズムをプログラミング
//冒泡排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 测试
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
int a = 0;
int[] num = new int[] {19,1,38,49,85,16,867,282 };
for (int i = 0; i < num.Length - 1; i--)
{
for (int j = 0; j < num.Length - 1 - i; j++)
{
if(num[j]>num[j+1])
{
a = num[j];
num[j] = num[j + 1];
num[j + 1] = a;
}
}
}
foreach (int number in num)
{
Console.WriteLine(number+"");
}
Console.ReadKey();
}
}
}
(D)は、文字列STR = NULLと文字列str = "" 差
文字列strの= nullを
文の意味は、文字列変数STRの定義は、文字列値が空です。
文字列str =「」
型文字列strの変数の定義、及びそれに値を割り当てます。
違い:
- 「」メモリを割り当て、ヌルは、メモリを割り当てることができません
- 「」文字列(文字列)は、彼の記憶がありますが、nullは、メモリ内のヌルオブジェクトが存在しないです。
- 「」総メモリは、メモリ内のスペースを割り当てます
SQLインジェクションSQLインジェクションを防ぐ方法が何であるかを(E)
SQLインジェクションは、入力パラメータに追加するSQLコードで、SQLサーバが解析され、実行される攻撃手法に渡されます。SQLインジェクション攻撃フィルタリングされていない入力パラメータは、直接SQL文、分析の実行にスプライス、行動の範囲を超えて期待されています。
SQLインジェクションは、どのように発生するのですか?
- Web開発者は、すべての入力がフィルタリングされていることを保証するものではありません
- SQLサーバー構成の実行可能コードへの送信データ入力を使用して攻撃
- セキュリティの設定を行うことなくデータベース(rootまたは管理者アカウントを使用せずに、特定のデータベース・アカウントを設定するには、Webアプリケーションのためには、特定のデータベース・アカウントの権限は、いくつかの簡単な操作を与える操作する権限のある同様の低下を回復します)
差(6つ)のプロセスとスレッド
図1に示すように、プロセスは、リソース割り当ての最小単位であり、スレッドは、プログラム実行の最小単位です。
図2は、プロセスは、各プロセスを開始し、それ自体の別個のアドレス空間を有し、システムは、コードセグメント、スタックとデータセグメントを維持するためにデータテーブルを設定し、彼のためにアドレス空間を割り当てるので、この操作は非常に高価です。スレッドのオーバーヘッドは、プロセスよりもはるかに小さい作成中のプロセスよりもCPUの変更は、はるかに小さいスレッドをとるようにスレッドは、同じアドレス空間を使用して、共有のプロセスデータです。
スレッド間3、より便利な通信、同じプロセスを共有グローバル変数、静的変数やその他のデータ内のスレッド、およびプロセス間の通信は、方法(IPC)通信で行います。しかし、どのように同期と相互排他を処理するためには、マルチスレッド・プログラムを書くことの難しさです。
長いスレッドダイがあるとして4が、プログラムより堅牢なマルチプロセス、マルチスレッドプログラム、全体のプロセスは、あまりにも、死んでいる、そしてプロセスは独自の個別のアドレス空間を持っているため、プロセスのダイは、他のプロセスへの影響はありません。
差(7)スタックとヒープ
プログラムのメモリ割り当て:
C / C ++コンパイラのメモリ使用量は、次のセクションに分かれています。
図1に示すように、スタック領域(スタック):コンパイラ自動的に解放、記憶された関数パラメータ、ローカル変数、等によって割り当てられました。スタックデータ構造と同様に動作します。
2、ヒープ領域(ヒープ):一般的に、プログラマは、プログラムの終了時に解放しない場合、プログラマによって割り当てられた解放は、OSによって回収することができます。注彼とヒープのデータ構造は、二つの異なるものですが、同様の配布リストを追加したこと。
図3は、全体的な領域(静的(静止領域)):グローバル変数と静的変数が一つに格納され、領域内のグローバルおよび静的変数を初期化され、初期化されていないグローバル変数と静的変数は、隣接する未初期化地域の他の作品。プログラムの後、システムのリリースがあります。
4、リテラルエリア:定数文字列がここに置かれています。システムによって放出されたプログラムの終了後。
図5に示すように、プログラムコード領域:バイナリコードの機能本体を格納します。
(VIII)C#のルール定義と指定されたインタフェース
パスカル・インターフェースは、ルールの使用を定義し、大文字の「I」で開始する必要があります。途中で、意味のあるものにするインターフェース名は、アンダースコア「_」や他の文字を持っていません。クラスがインタフェースを実装し、単に「I」の文字を省略することで、可能な限り同じ名前をインタフェースする場合。
(IX)インタフェースは、インタフェースを継承することができるかどうか?抽象クラスがインタフェースを実装することが可能かどうか?エンティティクラス抽象クラスを継承することができるかどうか?
1、インタフェースはインタフェースを継承することができますか?
あなたは、キーワードを拡張し、複数の継承をサポートし使用することができます。
2、インターフェース抽象クラスは、それを継承することができますか?
これは、implementsキーワードで達成することができます。
3、エンティティクラス抽象クラスは、それを継承することができますか?
これは、抽象クラスの実体法、すなわちすることができ、エンティティクラスを継承することができます。
(X)C#トライキャッチ最後に、基本的な構造
1、試してみてください。期待例外コードをtryブロックに含まれている可能性があります。
図2に示すように、キャッチ:例外が発生した場合、次に、キャッチの実施に移しました。
3、最後に:最後に、あなたが、あなたは一つだけ持つことができますすることはできません。または、一度発生しなかったと、彼は構造を扱うこの最後の例外で実行します。でもリターンで返されたtryブロック内で、返す前に、最終的には常にあなたの最終的なクリーンアップ作業中にいくつかの例外処理を行うことができる機会を与える、実行したいです。データベース接続のクローズ。
注:なしcatchブロック場合は、finallyブロックをする必要があります。
(XI)のトリガーとは何ですか?
トリガーは特別な保管方法で、彼は保護されたデータの実装をトリガに自動的に変更しようとします。自動的に実行されるような表またはビューにUPDATE、INSERT、DELETE文を発行したとき、彼は、データ変更があった場合に自動的に彼らのビジネスルールを適用、定義されました。