C# を始めるための古典的な学習段階の概要 (乱雑)
CLR: 共通言語ランタイム (.net 共通言語ランタイム) は、.net ライブラリによって開発されたすべてのアプリケーションの実行を管理します。
CTS: 共通型システム (共通型システム) は、最も基本的なものを指定します。 type .NET Framework を使用したさまざまな言語間の相互運用性に貢献します。
CIL: 共通中間言語 (共通中間言語) は、コードをこの言語にコンパイルします。CIL コードは、コンピューター、OS、CPU に依存せず、 JIT コンパイラによってコンパイルされる 作成に必要なネイティブ コードを使用する
JIT: ジャスト イン タイム (CIL コードは必要な場合にのみコンパイルされます)
マネージド コード: コードを CIL にコンパイルし、アセンブリに格納してから使用しますJIT コンパイラは、ネイティブ マシンに必要なコードにコンパイルし、.NET Framework で記述されたコードの実行も管理します。
.NET アプリケーションの作成に必要な手順:
->C を使用してアプリケーション コードを作成します
#->コードを CIL にコンパイルし、アセンブリに保存します
->コードを実行するときは、JIT コンパイラーを使用してコードをネイティブ コードにコンパイルする必要があります -> マネージ CLR 環境でのネイティブ コードの実行
文字列挿入: Console.WriteLine($"{outline}" の出力など) ) ;
演算子の優先順位: , -- 単項の場合、接頭辞 (), , - として使用されます! ,~
*,/,%
,-
<<,>>
<,>,<=,>=
==,! =
&
#|
&&
||
=,*=,/=,%=, =,-=,<<=,>> ;=,&=,^=,|=
,-- サフィックスとして使用されるブランチ テクノロジ
switch ステートメントは C で使用できます 別の実行case ステートメントを 1 つ実行した後に case を実行しますが、これは C# では不正です。各 case ステートメントには switch の実行を中断するために Break が必要です
さらに、return ステートメントを使用して switch 構造を中断するだけでなく、現在の関数を中断することもできます実行。goto ステートメントも使用できます。
3 種類のループ: do ループ、while ループ、for ループ
ループの割り込みコマンド: Break、Continue、return
列挙: 列挙値を他の型に変換するには明示的な変換が必要です replace("str1", "str2") を使用して関数を置き換え、str2 を使用してすべての str1 を置き換えますstring
または、出力パラメータ out キーワードを使用すると、未割り当ての変数を使用できます。関数が out を使用するときは、まだ割り当てられていないものとみなされなければなりません。
static キーワードはグローバル変数を定義し、const はグローバル定数を定義します
Delegate: 格納する型関数は参照しますが、そうではありません。 関数本体では、デリゲート キーワードを使用し、デリゲート宣言で戻り値の型とパラメーター リストを指定します。
クラスは、オブジェクトが持つプロパティと動作を決定します。
class progrem
{ //フィールド、関数、プロパティ、コンストラクターを作成できます。 。
//フィールド: データを保存する 属性: フィールドの取得を保護する (自動属性を保護する場合はインスタンス化が必要です) 機能: オブジェクトの動作を記述する コンストラクター: オブジェクトを初期化し、オブジェクトの各属性に値を割り当てる
}
Chuanzhi Podcast 基本強化 1:
oop:
カプセル化:
--->多くの冗長コードを削減
--->カプセル化するとわかりにくくなるはカプセル化されていますが、非常に単純なインターフェイスが外部に提供されます。問題なく使用させていただきます。
クラスを持つ
2. 親クラスにサブクラス オブジェクトが装備されている場合、この親クラスを対応するサブクラス オブジェクトに変換できます
---- & gt; キーワード
1, IS: Bool 型に戻り、この変換が実行できるかどうかを示します。
2. as: 変換が成功した場合はオブジェクトが返され、それ以外の場合は null が返されます
関数: すべてを処理できますサブクラスを親クラスとして作成し、親クラスで操作を実行する プログラミング、ユニバーサル コードの記述は、変化するニーズに適応します。
ポリモーフィズム:
--->仮想メソッド
インターフェイス
キーワード
new
1. オブジェクトを作成します
---> heap (オブジェクトは参照型であり、参照型の値はすべてヒープ内にあります)
--> 開いたヒープ領域にオブジェクトを作成します これは
1. のオブジェクトを表します。現在のクラス
2. 自身の構造体の表示
1. 親クラスを呼び出すコンストラクター (親のオブジェクトではありません) を表示
2. 呼び出し親クラスのメンバー
静的コンストラクターは、次の状況でのみ実行できます。
* 静的コンストラクターを含むクラス インスタンスを作成する場合
* を含むクラスの静的クラスにアクセスする静的コンストラクター メンバーが
string とオブジェクトが単純な参照型で、配列が暗黙的な参照型で、作成されたすべてのクラスが参照型である場合、コンパイラーは、派生クラスがコンストラクターよりアクセス可能になることを許可しません。ベースの種類。
インターフェイスの仕様は、基本クラスの継承の後にカンマで区切って配置する必要があります。
インターフェイスには、abstract および sealed というキーワードがありません (これらには実装コードが含まれておらず、直接インスタンス化できず、継承可能である必要があります)。インターフェイスはクラスではないため、System.Object
system.Object:
ReferenceEquals() bool: に渡された 2 つのオブジェクトを比較します。インスタンスへの参照
ToString() String: オブジェクトのインスタンスに対応する文字列を返します
MemberwiseClone() object: 新しいオブジェクト インスタンスを作成し、オブジェクトをコピーするメンバーをコピーします
GetHashCode() int: オブジェクトのステータスを圧縮形式で表す値を返します
コンストラクター初期化子。メソッド定義のコロンの後にコードを置きます。たとえば、派生クラスのコンストラクター定義で使用する基本クラス コンストラクターを指定できます。
.NET インスタンス化プロセスを指定するには、base() キーワードを使用します。基本クラスで指定されたパラメーターを持つコンストラクターを使用します。
作成できないクラスを定義します。静的クラスとして定義するか、またはすべてのコンストラクターを作成する 関数はプライベートとして定義されます。
作成できないクラスは、そのクラスが持つ静的メンバーを通じて使用できます。
ArrayList コレクションの場合、オブジェクトの Add() メソッドを使用して新しい項目を追加します。
yield iteration
ボックス化は値の型を System に変換します。オブジェクト型、またはコンバート 値型によって実装されるインターフェイス型です。開封はその逆です。
機能: 項目タイプがオブジェクトであるコレクションで値タイプを使用できるようにします。第 2 に、値タイプでオブジェクト メソッドを呼び出すことができる内部メカニズムがあります。
is 演算子:
= などの代入演算子をオーバーロードしたり、&& をオーバーロードしたりすることはできません。||
IComparable は比較対象のオブジェクトのクラスに実装されており、このオブジェクトを次のものと比較できます。別のオブジェクト: CompareTo()、int を提供し、オブジェクトを受け取ります。
IComparer は別のクラスに実装されており、任意の 2 つのオブジェクトを比較できます。 Compare()、int を提供し、2 つのオブジェクトを受け取ります。
Class Comparer は ICompare インターフェイスを提供します。 デフォルト実装: Comparer.Default.Compare(one,two)。 CaseInsensitiveComparer クラス: case-insensitive
null 許容型の宣言: int? nullableInt; int? は System.Nullable
Null 合体演算子??空の条件演算子?。結果が null の場合、デフォルト値を設定できます:
int? count=customer.order?.Count() ?? 0;
さらに、空の条件演算子の別の使用法きっかけとなるイベントです。
共分散、反分散:
ジェネリック型パラメーターは共変として定義され、out キーワードを追加します。それ以外の場合は、反変動性のために in キーワードを使用します。
Chuanzhi ポッドキャスト:
1. ネームスペースをインポートします。
ネームスペースはクラスの「フォルダー」です。クラスは「フォルダー」内のファイルです。名前空間をインポートする必要があります
参照を追加します:
あるプロジェクト内の別のプロジェクトのクラスにアクセスする必要がある場合
--->別のプロジェクトへの参照を追加します
-- ->名前空間をインポートする
2. 静的と非静的
静的メンバー: static によって変更されます
インスタンス メンバー: static によって変更されません
静的メンバーはインスタンス メンバーの前にメモリに読み込まれます。オブジェクトの作成時のみインスタンスを作成できます。メンバー。
静的クラスには静的メンバーのみが存在できます
呼び出し:
静的メンバーの呼び出し:
クラス名.静的メンバー名;
インスタンス メンバーの呼び出し:
インスタンス名.インスタンス メンバー; (インスタンスは私たちのオブジェクトです)
static をいつ使用するか?
---->すべての拡張メソッドなどのツール クラスとして!すべて静的が必要です
---->リソースはプロジェクト全体で共有されます。リソースが共有されているという理由だけで、静的メンバーはプロジェクト全体が終了するまでリソースが解放されるまで待つ必要があります。
プロジェクトでは静的メンバーの使用をできる限り少なくする必要があります。
継承はオブジェクトを作成するプロセスです。
3. デザイン パターン
---->単一ケースのデザイン パターン
プログラム全体を通じて、オブジェクトが一意であることを確認する必要があります。
は、#----&gt;ステップ3:静的関数を宣言してグローバルに一意のオブジェクトを返す
例:
//ステップ1:Constructor privatization ## initializeComponent();
}
//使用の使用Object
’s s s s n s ‐ ‐ ‐ ‐ _ to getsingle()
(); ##}
シンプルな工場デザインパターン#を使用して使用します
# 演算子を再入力します。計算された親クラスを返し、メソッドを呼び出して結果を取得します。
Sub Cheng Chu の追加
デザイン パターンの概念を最初に適用したのは建設業界です
1. 会社を登録します
2. 軍隊を募集します
3. 入札して土地を購入します
4. 手配 建設チームは建設を開始しました
5. 建物を販売します
デザイン パターンは、いくつかの特定の問題を具体的に解決するために使用されます。
4. クラス ライブラリ
.dll ファイル、いくつかの一般的な関数をカプセル化するためにクラス ライブラリを使用します
5. 値の型と参照型
値の型: int double char bool 10 進数 struct enum
参照型: string 配列 カスタム クラス インターフェイス デリゲート
値型の値はメモリ スタックに格納され、参照型の値はヒープに格納されます。
データをスタックに保存する方が、ヒープに保存するよりも効率が高くなります。
値の受け渡し: 値のタイプをパラメーターとして渡し、値自体を渡します。
注:
REF は値をリファレンス転送に変更できます。
参照渡し: 参照型の値をパラメータとして渡します。渡されるのは参照です。
6. 文字列学習
重要な機能:
不変性、文字列に対してどのような操作を行っても、メモリ内に新しいインスタンスが生成されます。
常駐プール
文字列は char 型の読み取り専用配列とみなすことができます。
GC:ガベージ コレクションは、メモリ全体をスキャンして、ポイントされていない領域があるかどうかを確認します。その後すぐに破壊してください。
1. 文字列の不変性について説明します。 2. 文字列定数の「一時プール」機能。
String 文字列。文字列は文字配列とみなされ、不変です (for ループを通じて文字列内の要素を変更すると失敗します!)。
Attribute
Length //文字列内の文字数を取得します。 "aA我你他"→5
Method
IsNullOrEmpty() 静的メソッド、null または "" と判定 (静的メソッド)
ToCharArray() 文字列を char[]
ToLower( ) に変換小文字、戻り値を受け取る必要があります。 (文字列は不変であるため);
ToUpper() は大文字です。
Equals() 2 つの文字列 (アドレス/オブジェクトの状態、および == はオブジェクト参照を比較) が同じかどうかを比較します。大文字と小文字の比較を無視する StringComparation.
等号に関係なく、文字列型と比較されます。または、Equals はすべて値自体と比較されます。
//Equals はデフォルトでアドレスを比較しますが、定義したクラスで Equals を使用する場合は、必要に応じて比較できるように Equals を書き換えます
対応するデータは -1 を返します。 //インタビューの質問: 文字列中に「天安門」が出現する回数を数えてください。
LastIndexOf() 対応するデータが見つからない場合は、-1
を返します Substring() // 2 つのオーバーロード、文字列をインターセプトします。
Split() //文字列を分割します。
Join() 静的メソッド
Replace()
オブジェクト初期化子: デフォルト以外のコンストラクターを使用する/追加のコードを追加する必要はなく、各プロパティにキーと値のペアを使用してそのプロパティを提供します価値 。
オブジェクトとコレクション初期化子をマージします (LINQ テクノロジでの使用に適しています) (コンパイラは、コレクション初期化子で指定された項目ごとにコレクションの Add() メソッドを呼び出します)
var キーワード、暗黙的な Formula 推論変数type には、int、string、array などを指定できます (新しい int?[] が定義されていない限り、数値は null 許容型として解釈されることはありません)。
データ ストレージ オブジェクトの値の属性を変更する場合は、匿名型は使用できません (読み取り専用プロパティとして定義されているため)
動的キーワード、動的変数型、
オプションのパラメータ、デフォルト値のないパラメータはデフォルト値で配置できません値パラメータの後。
名前付きパラメータ。パラメータの順序は任意であり、オプションです。ただし、名前付きパラメータと位置パラメータを混在させる場合は、すべての位置パラメータを含め、その後に名前付きパラメータを含める必要があります。
ラムダ式: デリゲートであり、デリゲート型の変数に割り当てられます; 式ツリーとして解釈されます
パフォーマンス: 括弧内のパラメーター リスト => C# ステートメント/{まだの場合は複数行のコード For void委任、return を追加する必要があります}
LINQ フレームワークには、ラムダ式をカプセル化するために使用できるジェネリック クラスが含まれています。このクラスを使用する 1 つの方法は、C# で記述されたラムダ式を抽出し、対応する SQL スクリプトに変換することです。
拡張メソッド Aggregate() は、コレクションの最初から最後まで要素の各ペアにアキュムレーター関数を適用することを意味します。
Chuanzhi Podcast 基本強化 3:
1. StringBuilder: 大規模な文字列操作を実行するためのツール。文字列オブジェクトは不変です。
ToString(); を使用して StringBuilder を String に変換します
これは文字列を結合するための単なるツールであり、ほとんどの文字列も String に変換されます
*StringBuilder sb=new StringBuilder();
*sb .Append( );//文字列を追加します
*sb.ToString();//ToString("x2")、これは 16 進数に変換することを意味し、2 桁になります。
*sb.Insert();
*sb.Replace();
HTML 内のテーブルを結合するプログラムを使用します。WPF にはフォーム アプリケーション用の DocumentText がなく、webBrow.NavigateToString のみを使用できます。 (sb.ToString());
2. out: out パラメーターは関数内で複数の値を返すことに重点を置いており、パラメーター要件にはメソッド内で値を割り当てる必要があります
3. Ref パラメーター: ref パラメーターは、値を取得することに重点を置いています。オーストラリアン関数に変更を加え、変更された値を取得します。 ref パラメーターには関数内で値を割り当てる必要はありません。また、ref パラメーターには関数の外で値を割り当てる必要があります。
4.
5. コレクション学習:
非ジェネリック コレクション:
ArrayList
ジェネリックコレクション:
List
Capcity: コレクションに含めることができる要素の数 (初期値は4、毎回2倍)
Count: セットを取得します
に実際に含まれる要素の数 Add(): 単一の要素を追加します use use use use use use useアウト スルー アウト スルー 使用する 使用する アウト アウト スルーの ‐ スルースルースルースルースルースルースルー‐ ‐ ‐‐ ‐‐
' ' s's's's's's's's ‐ ‐ ‐ ‐ ' : 要素を削除
Removerange(): 一定範囲内の要素を削除
Toarray(): コレクションを配列に変換
Tolist (): ;Tkey,Tvalue>
6. パッキングとアンボックス化:
パッキング: 値型--->参照型
アンボックス化: 参照型--->値型
アンボックス化またはボックス化が発生したかどうかを判断するには、まず 2 つのデータ型の間に継承関係があるかどうかを判断する必要があります。
箱には、どのような種類の箱が使用されているか、分解時にどの種類が取り外されるか。
7. エンコード形式:
アスキー 256
6000 GB2312
GBK GB18030
ISO
Unicode
utf-16
utf-8
コードが文字化けする理由: このファイルを保存するときに使用されるエンコーディングとオープニング このファイルで使用されるエンコーディング形式は一貫していません。
# . Move(): Cut Cut
Copy(): copy
Delete():
ReadAllLines() ReadAllText() ReadAllText() で使用されるデフォルトのエンコード形式は utf-8
です。 Directory: 操作はフォルダーです
CreateDirectory: 新しいフォルダーを作成します
Delete:Delete
Move:Cut
Exist() は指定されたフォルダーが存在するかどうかを判断します
GetFiles() フルパスを取得します指定されたディレクトリ内のすべてのファイルの
Directory.getFiles (@"e: \ download", "*.avi") すべての .avi ファイルを取得します
stetDirectories () は、指定されたディレクトリ内のすべてのフォルダーを取得します
フォルダー
正規表現メインクラス: Regex
はテンプレートです。このテンプレートを使用して、文字列の束の中から必要なデータを見つけることができます。
注: 正規表現は文字列を操作します。
構成:
修飾子、メタキャラクター、一般的に使用される式
一致するかどうかの決定: Regex.IsMatch("String", " Regular Expression");
文字列抽出: Regex.Match("String" , "抽出する文字列の正規表現");
(すべて抽出するループ): Regex.Matches()
文字列置換: Regex.Replace("String", " Regular", "Replace content" );
. ? 多数の文字に一致します
(? .11111."
Greed: . .できるだけ多く一致します
貪欲でない: .? 。可能な限り一致しないようにします。1
スタイル: コントロールにバッチで適用される特定のプロパティを設定します
テンプレート:それに基づいてコントロールの外観を設定します
トリガー:
プロパティを定義するにはTrigger オブジェクトによって監視される場合は、Trigger.Property プロパティを使用する必要があります。
Trigger オブジェクトがいつアクティブ化されるかを定義するには、Trigger.Value プロパティを設定する必要があります。
アニメーション: ストーリーボードを通じて作成されたストーリーボード オブジェクトはリソース ディクショナリに含まれており、x:Key 属性を通じて識別される必要があります
キーフレームのないタイムライン: DoubleAnimation、PointAnimation ColorAnimation を使用した依存プロパティ
:「propdp」と入力し、Tab キーを 2 回押してプロパティ テンプレートを挿入します
XML: 拡張マークアップ言語
HTML との違い: XML の要素は閉じられている必要があります。 XML 内の要素の属性は引用符で囲む必要があります。
構文仕様: タグ、ネスト、および属性。
ラベル (つまり、要素) は閉じている必要があり、属性値は "" で囲まれている必要があり、ラベルは相互にネストできます。
XML では、ノード (Node) に要素 (Element) が含まれます。
大文字と小文字を区別します
XML の作成: DOM ドキュメント オブジェクト モデル
XmlDocument doc=new XMLDocument();
## .RemoveAll(); はい、ルート ノードの下にある子ノードをすべて削除します
削除子ノード: ITems.RemoveChild(xn);
ノードの属性値を削除します: xn.Attributes.RemoveNamedItem("Count") ;
ctrl K および S/X、コードを挿入するショートカット キー#regionなどのセグメント/外部コード
デリゲートデリゲート:デリゲートを使用して関数をパラメータとして渡す
DelSayHi del = SayHi Chinese;//new DelSayHi(SayHi Chinese);
比較: 委任は安全ではありません、 イベント自体は安全ですdelegate
イベントを定義します:
public delegate void delTest(); //イベントを登録するときはデリゲートが必要です
publicevent delTesteventTest; //括弧はありません
eventTest = new delTest(method1);
eventTest = new delTest(method2);
概要:
委任の役割:
何が起こるかわからない場合は、プレースホルダーを配置します。メソッドの特定のコードを実行するとき、最初にデリゲート変数を使用してメソッド呼び出しを置き換えることができます (デリゲートの戻り値とパラメーター リストを決定する必要があります)
イベントの関数:
関数イベントの内容はデリゲート変数と同じですが、関数の点ではデリゲート変数よりも制限が厳しくなります。
例: 1. メソッドは = または -= を介してのみバインドできます。 2. イベントはクラス内でのみ呼び出す (トリガーする) ことができます。
アセンブリの利点:
プログラム内で必要なアセンブリのみが参照されるため、プログラムのサイズが削減されます。
アセンブリは一部のコードをカプセル化し、必要なアクセス インターフェイスのみを提供できます。
第 16 章:
クラウド: データ センター内で稼働する大量の商用コンピューター ハードウェアです。このデータ センターはプログラムを実行し、大量のデータを保存できます。
クラウド サービス モデル:
1. サービスとしてのインフラストラクチャ (IaaS): 責任はオペレーティング システムから始まり、上位にいきます。
2. サービスとしてのプラットフォーム (PaaS): この値は、選択したオペレーティング システムで実行されるプログラムとその依存関係を担当します。
3. Software as a Service (SaaS): インターネット経由でアクセスされるデバイス上で使用されるソフトウェア プログラムまたはサービス。
関連する推奨事項:
静的ローカル変数を通じて C、C、C#、Java を見てみる, PHP
の特徴以上がC# を始めるための古典的な学習段階の概要 (乱雑)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C# を使用した Active Directory のガイド。ここでは、Active Directory の概要と、C# での動作方法について、構文と例とともに説明します。

C# データ グリッド ビューのガイド。ここでは、SQL データベースまたは Excel ファイルからデータ グリッド ビューをロードおよびエクスポートする方法の例について説明します。

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。
