「C# チュートリアル」は、C# 言語の入門コースです。コースでは、.NET プラットフォームと C# の基本的な概念から始まり、C# 開発の基本的な構文、簡単なプログラムについて詳しく説明します。ロジック、Visual Studio ツールの使用スキル、一般的に使用されるツールの実装。同時に、コース関連の演習やプログラミング演習を通じて、学生が C# 言語にすぐに慣れることができるようにしたいと考えています。
コース再生アドレス: http://www.php.cn/course/84.html
先生の教え方:
先生の講義はシンプルかつ奥深く、明瞭です論理的思考力を使用して生徒の注意を引き、理性を使用して教室での指導プロセスを制御することで、層ごとに連動し、厳密な議論と厳密な構造を組織化して分析します。教師の講義を聞くことで、学生は知識を学ぶだけでなく、思考のトレーニングも受け、教師の厳格な学問的態度に影響され、影響を受けます。 このビデオの中で最も難しい部分は、C# マルチスレッドです:
。
1. スレッドを使用する理由
1. スレッドを使用すると、コードを他のコードから分離し、アプリケーションの信頼性を向上させることができます。 2. スレッドを使用してコーディングを簡素化できます。 3. スレッドを使用して同時実行を実現できます。 2. 基本知識 1. プロセスとスレッド: オペレーティング システム実行プログラムの基本単位として、プロセスはアプリケーションのリソースを所有します。プロセスのリソースはスレッドによって共有されます。独自のリソースではありません。 2. フォアグラウンド スレッドとバックグラウンド スレッド: Thread クラスを通じて作成された新しいスレッドは、デフォルトでフォアグラウンド スレッドになります。すべてのフォアグラウンド スレッドが閉じられると、すべてのバックグラウンド スレッドも例外をスローせずに直接終了されます。 3. サスペンド (サスペンド) とウェイクアップ (レジューム): スレッドの実行順序とプログラムの実行は予測できないため、サスペンドとウェイクアップの使用はデッドロックになりやすいため、できるだけ使用しないようにする必要があります。実際のアプリケーションでは。 4. スレッドのブロック: スレッドが終了するまで呼び出し元のスレッドをブロックします。 5. スレッドを終了します: 中止: ThreadAbortException 例外をスローして、スレッドを終了します。割り込み: ThreadInterruptException 例外をスローしてスレッドを終了し、例外をキャッチすることで実行を続行できます。 6. スレッドの優先順位: AboveNormal BelowNormal 最高最低 通常、デフォルトは通常です。 3. スレッドの使用 スレッド関数は、パラメーターなしで渡すことも、パラメーターを使用して渡すこともできます (パラメーターは 1 つだけ)。namespace Test { class Program { static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(TestMethod)); Thread t2 = new Thread(new ParameterizedThreadStart(TestMethod)); t1.IsBackground = true; t2.IsBackground = true; t1.Start(); t2.Start("hello"); Console.ReadKey(); } public static void TestMethod() { Console.WriteLine("不带参数的线程函数"); } public static void TestMethod(object data) { string datastr = data as string; Console.WriteLine("带参数的线程函数,参数为:{0}", datastr); } } }
4. スレッドプール
スレッドの作成と破棄には一定量のオーバーヘッドが必要なため、スレッドを過剰に使用するとメモリリソースの無駄が発生するため、パフォーマンスを考慮してスレッドプールの概念が導入されました。スレッド プールはリクエスト キューを維持し、スレッド プール コードはキューからタスクを抽出し、実行のためにスレッド プール内のスレッドに委任します。そのため、スレッドは実行直後に破棄されません。バックグラウンドやスレッドの作成と破棄にかかるコストを削減できます。 スレッド プール スレッドのデフォルトはバックグラウンド スレッド (IsBackground) です。namespace Test { class Program { static void Main(string[] args) { //将工作项加入到线程池队列中,这里可以传递一个线程参数 ThreadPool.QueueUserWorkItem(TestMethod, "Hello"); Console.ReadKey(); } public static void TestMethod(object data) { string datastr = data as string; Console.WriteLine(datastr); } } }
5. タスククラス
namespace Test { class Program { static void Main(string[] args) { Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 1000); t.Start(); t.Wait(); Console.WriteLine(t.Result); Console.ReadKey(); } private static Int32 Sum(Int32 n) { Int32 sum = 0; for (; n > 0; --n) checked{ sum += n;} //结果太大,抛出异常 return sum; } } }タスクが完了すると、新しいタスクが自動的に開始されます。
1 つのタスクが完了すると、スレッドをブロックせずに別のタスクを開始できます。
namespace Test { class Program { static void Main(string[] args) { Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 1000); t.Start(); //t.Wait(); Task cwt = t.ContinueWith(task => Console.WriteLine("The result is {0}",t.Result)); Console.ReadKey(); } private static Int32 Sum(Int32 n) { Int32 sum = 0; for (; n > 0; --n) checked{ sum += n;} //结果溢出,抛出异常 return sum; } } }
6. デリゲートの非同期実行
namespace Test { public delegate string MyDelegate(object data); class Program { static void Main(string[] args) { MyDelegate mydelegate = new MyDelegate(TestMethod); IAsyncResult result = mydelegate.BeginInvoke("Thread Param", TestCallback, "Callback Param"); //异步执行完成 string resultstr = mydelegate.EndInvoke(result); } //线程函数 public static string TestMethod(object data) { string datastr = data as string; return datastr; } //异步回调函数 public static void TestCallback(IAsyncResult data) { Console.WriteLine(data.AsyncState); } } }7. スレッド同期 1) アトミック操作 (インターロック): すべてのメソッドがアトミックな読み取りまたは書き込み操作を実行します。 2) lock() ステートメント: パブリック型をロックしないでください。ロックしないと、インスタンスがコード制御の範囲を超えてしまいます。ロックするプライベート オブジェクトを定義します。 3) Monitor はスレッド同期を実装します Monitor.Enter() と Monitor.Exit() を通じて、排他的ロックが取得および解放され、取得後はリソースは排他的となり、他のスレッドはアクセスできません。 TryEnterメソッドもあり、リソースがリクエストできない場合はブロックせずに待機し、タイムアウトを設定して取得できない場合はfalseを返すことができます。 4) ReaderWriterLock リソース操作に読み取りが多く書き込みが少ない場合、リソースの使用率を向上させるために、読み取り操作のロックは共有ロックになり、複数のスレッドがリソースを同時に読み取ることができますが、書き込み操作は排他的ロックになります。 1 つのスレッドのみの動作を許可します。 5) イベントクラスは同期を実装します
イベントクラスには終了状態と非終了状態の2つの状態があり、終了状態でWaitOneを呼び出すと成功を要求でき、Setを通じて時間状態を終了状態に設定できます。
1) AutoResetEvent(自動リセットイベント)
2) ManualResetEvent(手動リセットイベント)
6) Semaphore(セマフォ)
セマフォはカーネルオブジェクトが保持するint変数で、0の場合はスレッドがブロックされます。 、0 より大きい場合はブロック解除されます。セマフォ上の待機スレッドのブロックが解除されると、セマフォのカウントは +1 されます。
スレッドはWaitOneを通じてセマフォを1つ減らし、Releaseを通じてセマフォを1つ増やします。使い方はとても簡単です。
7) Mutex(ミューテックス)
専用のリソースで、使い方はセマフォと似ています。
8) クロスプロセス同期
システムレベルの同期は、同期オブジェクトの名前を設定することで実現できます。異なるアプリケーションは、同期オブジェクトの名前を通じて異なる同期オブジェクトを識別します。
以上がC# ビデオ チュートリアルに関するリソースの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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