C#

 Computer >> コンピューター >  >> プログラミング >> C#
  1. 【C#】文字列の前半と後半が同じ文字セットを持つかどうかを判定する方法

    この記事では、C#を使って文字列の前半と後半が同じ文字セット(使用されている文字の種類)を持っているかどうかを判定する方法を解説します。カウンター配列を活用したシンプルで効率的なアプローチを紹介します。アルゴリズムの考え方まず、チェック対象の文字列を設定します。string s = "timetime";次に、文字列の前半と後半それぞれの出現文字を数えるためのカウンター配列を2つ用意します。ここでは英小文字を想定しているため、26個の要素を持つ整数配列を使用します。int []one = new int[MAX_CHAR]; int []two = new int[MAX_

  2. C#のstringとcharキーワードの基本:宣言方法と使い方をわかりやすく解説

    C#では、文字列や文字を扱うために「string」と「char」という2つの重要なキーワードが用意されています。それぞれの役割と基本的な使い方を、サンプルコードとともに解説します。 stringキーワードとは stringキーワードは、文字列型の変数を宣言するために使用します。実はstringは、.NETのSystem.Stringクラスのエイリアス(別名)であり、どちらを使っても同じ意味になります。 文字列変数の宣言例 まずは、単一の文字列変数を宣言して値を代入する基本的な例です。 string name; name = Tom Hanks; この例では、nameという文字列変数を宣言し

  3. C#で列挙型(enum)のメンバーを比較する方法

    C# で列挙型(enum)のメンバー同士を比較したい場合は、Enum.CompareTo() メソッドを使用します。このメソッドは、現在のインスタンスと指定されたオブジェクトを比較し、相対的な順序を表す整数値を返します。列挙型の定義まず、学生のランクを表す列挙型とその値を設定しましょう。enum StudentRank { Tom = 3, Henry = 2, Amit = 1 };ここでは、Tom に 3、Henry に 2、Amit に 1 という数値が割り当てられています。この数値が比較の基準となります。CompareTo() メソッドによる比較次に、compareTo() メソッドを

  4. C#の「is」演算子とは?目的と使い方を実例付きで解説

    C#の「is」演算子とはC#における「is」演算子は、オブジェクトの実行時の型(ランタイム型)が、指定した型と互換性があるかどうかを判定するために使用されます。判定結果はbool値(true / false)として返されるため、条件分岐と組み合わせて使われることが多い演算子です。基本構文is演算子の基本的な構文は以下の通りです。expr is typeexpr:判定対象となる式type:比較対象となる型の名前式 expr の実行時の型が type と互換性がある場合は true を、互換性がない場合は false を返します。使用例以下は、C#でis演算子を使用してオブジェクトの型を判定する例

  5. C#のアクセス指定子とは?目的と5つの種類をわかりやすく解説

    アクセス指定子(アクセス修飾子)とは、クラスのメンバー(フィールドやメソッドなど)に対して、どこからアクセスできるのかという範囲(スコープ)と可視性を定義するためのキーワードです。適切なアクセス指定子を使い分けることで、カプセル化を実現し、安全で保守性の高いコードを書くことができます。 C#では、主に以下の5種類のアクセス指定子がサポートされています。 public(パブリック) private(プライベート) protected(プロテクテッド) internal(インターナル) protected internal(プロテクテッド・インターナル) それでは、それぞれの特徴を順番に見てい

  6. 【C#】2のべき乗の剰余(モジュロ)をビット演算ANDで高速に計算する方法

    剰余(モジュロ)計算といえば通常は % 演算子を使いますが、除数が2のべき乗(2, 4, 8, 16…)である場合は、ビット演算のAND(&)だけで同じ結果を得られます。除算よりもビット演算の方がはるかに軽い処理のため、パフォーマンスが求められる場面でよく使われる定番テクニックです。 仕組み:なぜ「a & (b−1)」で剰余が求まるのか 2のべき乗から1を引いた値は、2進数で見ると下位ビットがすべて1になっています。 8 = 1000 8 − 1 = 7 = 0111 そこで「被除数 a」と「b − 1」のANDを取ると、a の下位ビットだけが抽出され、その値は a % b

  7. C#でファイルを圧縮・解凍する方法(GZipStreamクラスの使い方)

    C#では、System.IO.Compression 名前空間を利用することで、ファイルの圧縮(ZIP化)と解凍を簡単に実装できます。本記事では、GZipStreamクラスを使った基本的な圧縮・解凍の方法を、サンプルコードとともにわかりやすく解説します。なお、GZipStreamを使用する場合は、プロジェクトに using System.IO.Compression; を追加してください。.NET Framework 4.5以降では、アセンブリ「System.IO.Compression」への参照も必要です。ファイルの圧縮(ZIP化)ファイルを圧縮するには、GZipStreamクラスをFile

  8. C#のconst・static・readonlyの違いを徹底解説!正しい使い分け方

    はじめにC#では、変更されたくない値を扱う際に「const」「static」「readonly」という3つのキーワードを使い分けます。それぞれの役割や動作の違いを正しく理解することで、より安全で保守性の高いコードを書くことができます。本記事では、各キーワードの特徴と具体的な使用例をわかりやすく解説します。const(定数)constキーワードで宣言されたフィールドは定数であり、プログラムの実行中に値を変更することが一切できません。また、宣言の時点で必ず初期値を代入する必要があります。const int a = 5;constはコンパイル時に値が確定するため、固定の設定値や数学的な定数などに適し

  9. C#のDivideByZeroExceptionクラスとは?ゼロ除算例外の基本と使い方を解説

    C#における例外は、すべてクラスとして表現されます。C#の例外クラスは、主にSystem.Exceptionクラスから直接または間接的に派生しており、代表的な派生クラスとしてはSystem.ApplicationExceptionやSystem.SystemExceptionなどが挙げられます。 System.DivideByZeroExceptionは、整数値をゼロで除算しようとした際に発生するエラーを処理するための例外クラスです。この例外はSystem.ArithmeticExceptionの派生クラスであり、プログラムの実行中にゼロ除算が行われると、共通言語ランタイム(CLR)によって自

  10. C#でメソッドを非同期に呼び出す方法【async / awaitの使い方】

    C#における非同期プログラミングは、ブロックされる処理やアクセスの遅延が発生するタスクを効率的に扱うための重要な手法です。同期処理の中でこのようなブロックが発生すると、アプリケーション全体が待機状態に入り、処理に余計な時間がかかってしまいます。最悪の場合、アプリケーションは「応答なし」の状態に陥ります。一方、非同期アプローチを採用すれば、ブロック中の処理を待っている間も、他のタスクを継続的に実行できます。同期処理が引き起こす問題GUIを持つアプリケーションを例に考えてみましょう。このアプリケーションはキューの内容を確認し、未処理のタスクがあればそれを取り出して優先的に処理します。ここでコードが

  11. C#における動的バインディング(dynamic)の仕組みと使い方

    C#の動的バインディング(dynamic binding)では、コンパイラはコンパイル時に型チェックを行いません。代わりに、型のチェックは実行時(ランタイム)に行われます。この特性を活かすことで、匿名型(anonymous types)が1つのメソッド内でしか利用できないという制限を回避できます。その理由は、匿名型の型名がコンパイラにしか見えないため、通常の方法ではメソッドの戻り値として宣言できないからです。コード例:dynamicを使った匿名型の返却public dynamic GetAnonymousType() { return new { StudentName

  12. C#のSortedListクラスでKeysプロパティを使ってキーを取得する方法

    C#では、SortedListクラスのKeysプロパティを使用することで、SortedListに格納されているすべてのキーを簡単に取得できます。 この記事では、Keysプロパティの基本的な使い方を、実際のコード例とともにわかりやすく解説します。 SortedListへの要素の追加 まず、Add()メソッドを使ってSortedListにキーと値のペアを追加します。 SortedList sl = new SortedList(); sl.Add(ST0, One); sl.Add(ST1, Two); sl.Add(ST2, Three); sl.Add(ST3, Four); sl.Add(S

  13. C#でTask(タスク)を開始するさまざまな方法

    C#で非同期処理を実装する際に欠かせないのが Task クラスです。タスクの開始方法は1つに限らず、状況や好みに応じて複数の記述方法から選択できます。この記事では、代表的な3つの方法をコード例とともにわかりやすく解説します。 1. デリゲートを使ってタスクを開始する Task のコンストラクタにデリゲートを渡してインスタンスを生成し、Start() メソッドを呼び出して実行する方法です。処理の内容を明示的に分けて書きたい場合に有効です。 Task t = new Task(delegate { PrintMessage(); }); t.Start(); 2. Task.Factory

  14. C#における例外の伝播(Exception Propagation)の仕組みを解説

    C#の例外処理の仕組みを理解すると、「例外の伝播」についても自然に把握できるようになります。tryブロック内で例外が発生すると、まず対応するcatchブロックがその例外を捕捉できるかどうかが順番にチェックされます。もし一致するcatchブロックが見つからなければ、例外はより上位の階層にあるtryブロックへと伝播していきます。この処理は、例外がいずれかのcatchブロックで捕捉されるまで繰り返されます。そして最後まで例外が捕捉されなかった場合、プログラムの実行はそこで終了します。以下の例では、ネストされた(入れ子になった)try文を使って、この例外の伝播の概念をわかりやすく説明しています。サンプ

  15. C#のDictionary(辞書)メソッド一覧と基本的な使い方

    C#におけるDictionaryは、キー(Key)と値(Value)のペアを格納するコレクションです。ジェネリック版の Dictionary<TKey, TValue> は、System.Collections.Generic 名前空間に含まれており、型安全にキーと値を管理できます。Dictionaryでよく使われる主なメソッド・プロパティは以下の通りです。No.メソッドと説明1Add(TKey, TValue)Dictionaryにキーと値のペアを追加します。同じキーが既に存在する場合は例外が発生します。2Remove(TKey)指定したキーを持つ要素を削除します。3Contai

  16. C#でヘッドノードからn番目の要素を削除する方法

    はじめにまず、リンクリスト(連結リスト)を作成し、いくつかの要素を追加します。Demo list = new Demo(); list.Push(50); list.Push(100); list.Push(150);ヘッドノードからn番目の要素を削除するには、削除したいノードの位置(値)を渡します。例えば「1」を指定した場合、ヘッドノードそのものが削除されます。サンプルコードif (val == 1) {    head = head.Next;    return; } // nは削除したいノードの直前のノードを指します Node n = head;

  17. C#のDebugクラスとDebuggerクラスとは?主なプロパティと使い方を解説

    C#でコードをデバッグする際には、デバッグ用のメソッドやプロパティが必要になります。これらを提供しているのがDebugクラスです。 一方、Debuggerクラスは、実行中のプログラムとデバッガとの通信を確立するために使用されます。 Debugクラスとは Debugクラスは、System.Diagnostics名前空間に属する静的クラスです。デバッグ用の出力やアサーションなど、コードの検証に役立つ機能を提供します。構文は以下の通りです。 public static class Debug Debugクラスの主なプロパティは次の通りです。 番号 プロパティと説明 1 AutoFlus

  18. C#の依存性注入(DI)とは?3つの注入方法をわかりやすく解説

    C#における依存性注入(Dependency Injection:DI)は、疎結合なコードを実現するために導入された設計手法です。疎結合なコードとは、各クラスやモジュール間の依存関係が最小限に抑えられたコードのことで、保守性が高く、再利用もしやすいという大きなメリットがあります。 依存性注入には主に以下の3つの方式があります。それぞれの特徴と使いどころを見ていきましょう。 1. コンストラクタインジェクション コンストラクタインジェクションは、コンストラクタの引数(パラメータ)を使って依存オブジェクトを渡す方式です。C#で最も一般的に使われる手法で、クラスが1つ以上の依存関係を必要とする場合に

  19. C#の正規表現における数量詞の使い方を一覧表で解説

    C# 正規表現における数量詞とは C# の正規表現における数量詞(Quantifier)は、直前の要素(1 文字、グループ、または文字クラス)が入力文字列の中で何回出現すれば一致とみなされるかを指定するための記号です。数量詞を使いこなすことで、「数字が 3 桁続く部分」や「特定の文字が 0 回以上繰り返される部分」といった柔軟なパターンマッチングが可能になります。 数量詞の一覧表 数量詞 説明 パターン 一致例 * 直前の要素に 0 回以上一致します。 \d*\.\d .0、19.9、219.9 + 直前の要素に 1 回以上一致します。 be+ been 内の bee、bent

  20. C#におけるvarとdynamicの違いとは?型付けの挙動を徹底解説

    C#におけるvarとdynamicの違い C#では、varは厳密に型付けされた変数を宣言するキーワードであるのに対し、dynamicは厳密な型チェックを行わないキーワードです。この違いにより、コンパイル時と実行時でそれぞれ異なる挙動を示します。 varによる変数宣言 varは暗黙的に型付けされる変数です。宣言時に代入された値から、コンパイラが自動的に型を推論します。 var a = 10; この場合、変数 a は int 型として推論されます。一度型が決まると、以降は別の型の値を代入することができません。 dynamicによる変数宣言 dynamicで宣言された変数は、コンパイル時の型

Total 2668 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:70/134  20-コンピューター/Page Goto:1 64 65 66 67 68 69 70 71 72 73 74 75 76