-
【C#】日付形式の妥当性を検証する方法|DateTime.TryParseExactの使い方
C#で日付文字列が正しい書式になっているかどうかを確認したい場合、DateTime.TryParseExactメソッドを使用するのが最も簡単で確実な方法です。 このメソッドは、指定された文字列形式の日付・時刻を、それと等価なDateTime型の値に変換します。変換に成功すればtrue、指定した書式と一致しなければfalseを返すため、入力された日付の形式が正しいかどうかの検証にそのまま利用できます。 基本的な使い方 TryParseExactメソッドの主な引数は以下の通りです。 第1引数: 検証対象となる日付の文字列 第2引数: 期待する書式(例: MM/dd/yyyy) 第3引数: カル
-
C#で2つのリストの差分を取得する方法:Except()メソッドの使い方
C#で2つのリストの差分(一方のリストにのみ存在する要素)を取得するには、LINQのExcept()メソッドを使うのが最も簡単です。まずは、比較対象となる2つのリストを用意しましょう。// 最初のリスト List<string> list1 = new List<string>(); list1.Add("A"); list1.Add("B"); list1.Add("C"); list1.Add("D"); // 2番目のリスト List<string> list2 = ne
-
C#で2つのソート済み配列を1つにマージする方法【初心者向け解説】
C#では、複数の配列を1つの配列に結合(マージ)することができます。本記事では、2つのソート済みの整数型配列を用意し、それらを3つ目の配列に順番にコピーしてマージする基本的な方法を、サンプルコードと実行結果とともにわかりやすく解説します。 マージする2つの配列を定義する まず、マージしたい2つの配列を宣言します。ここでは、それぞれ5つの要素を持つ整数型配列 arr1 と arr2 を用意します。 int[] arr1 = new int[5] { 5, 15, 25, 30, 47 }; int[] arr2 = new int[5] { 55
-
C#のジャグ配列の要素の型とは?参照型としてnullで初期化される仕組みを解説
C#におけるジャグ配列(Jagged Array)とは、「配列の配列」のことです。そのため、ジャグ配列の各要素は参照型であり、宣言した直後の状態では null に初期化されるという特徴があります。つまり、ジャグ配列自体は1つの配列ですが、その各要素がさらに別の配列への参照を保持する構造になっています。この性質により、内側の配列ごとに異なる長さを持たせることができるのが大きなメリットです。ジャグ配列の宣言方法まず、ジャグ配列を宣言します。以下のように、角括弧を2つ重ねて記述します。int[][] marks;ジャグ配列の初期化方法次に、宣言したジャグ配列を初期化します。ここでは、5つの整数型配列
-
C#におけるボックス化解除(Unboxing)とは?
C#におけるボックス化解除(Unboxing)とは?C#では、値型をobject型に変換する操作を「ボックス化(Boxing)」と呼び、逆に、ボックス化によって作成された参照型を元の値型へ戻す操作を「ボックス化解除(Unboxing)」と呼びます。重要なポイントは、ボックス化は暗黙的に行われる一方、ボックス化解除は明示的に行う必要があるという点です。つまり、ボックス化されたオブジェクトを値型に戻す際には、必ず明示的なキャストを記述しなければなりません。変数とオブジェクトの基本的な例以下は、C#における変数とオブジェクトの関係を示したシンプルな例です。// int型の変数 int x = 30;
-
C#のアンマネージコードとは?unsafe修飾子とポインタの使い方を解説
C#におけるアンマネージコード(unmanaged code)とは、以下のような特徴を持つコードを指します。CLR(共通言語ランタイム)の管理下にないアプリケーションは、アンマネージコードに分類されます。アンセーフコード(unsafe code)、すなわちアンマネージコードとは、ポインタ変数を使用するコードブロックのことです。unsafe修飾子を使用することで、アンマネージコード内でポインタを利用できるようになります。通常、C#ではメモリ管理はCLRが自動的に行うため、ポインタを直接扱うことはできません。しかし、パフォーマンスが重要な処理やネイティブなAPIとの連携が必要な場面では、unsaf
-
C#のtry-catch-finallyによる例外処理のフロー制御をわかりやすく解説
C#におけるtry、catch、finallyブロックのフロー制御は、実際のコード例を見ると理解しやすくなります。ここでは、2つの数値の除算を行うプログラムを例に、例外処理の流れを解説します。 サンプルコード using System; namespace ErrorHandlingApplication { class DivNumbers { int result; DivNumbers() { result = 0; } public void division(int num1, int
-
C#で10進数を2進数に変換する方法をわかりやすく解説
はじめにC#のプログラミングにおいて、10進数を2進数に変換する処理は、アルゴリズムの基礎を学ぶうえで非常に重要なテーマです。本記事では、除算演算子(/)と剰余演算子(%)を使った基本的な変換方法を、サンプルコードとともに詳しく解説します。10進数から2進数への変換の手順例として、10進数の「48」を2進数に変換してみましょう。変換の基本手順は以下のとおりです。対象の数値を2で割るその際の剰余(% 演算の結果)を記録する商(/ 演算の結果)が1以上である限り、同じ処理を繰り返すこれをコードで表現すると、次のようになります。decVal = 48; while (decVal >= 1)
-
C#で文字列が回文(パリンドローム)かどうかを判定する方法
回文(パリンドローム)とは、前から読んでも後ろから読んでも同じになる文字列のことです。例えば「Level」や「madam」などが代表的な例です。この記事では、C#を使って文字列が回文かどうかを判定する方法を解説します。回文判定の基本的な流れまず、判定対象となる文字列を用意します。str = Level;次に、ToCharArray() メソッドを使って文字列を文字配列に変換します。これにより、各文字に個別にアクセスできるようになります。char[] ch = str.ToCharArray();続いて、Array.Reverse() メソッドで配列の要素順を反転させます。Array.Rever
-
C#でHello Worldを表示する方法を初心者向けにわかりやすく解説
C#で「Hello World」という文字列を出力するには、Console.WriteLineメソッドを使用します。これはC#プログラミングの最初の一歩として最も基本的な操作であり、開発環境が正しく動作しているかを確認するのにも役立ちます。 基本的なC#プログラムの例 それでは、テキストをコンソールに表示するシンプルなC#プログラムを見てみましょう。 using System; using System.Collections.Generic; using System.Text; namespace Program { class MyApplication { s
-
C#のLinkedList(連結リスト)の基本と使い方を解説
C#のLinkedList<T>とはC#では、System.Collections.Generic名前空間に用意されているLinkedList<T>クラスを使用することで、連結リスト(リンクリスト)を簡単に扱うことができます。LinkedList<T>の最大の特徴は、リスト内への要素の挿入と削除を高速に行える点です。配列ベースのコレクションと異なり、要素の追加・削除時に他の要素を移動させる必要がないため、データの入れ替えが頻繁に発生する場面で特に有効です。LinkedList<T>の主な特徴要素の挿入・削除が高速に行える重複した要素を格納できるS
-
C#でファイルやフォルダを検索する方法
C#でディレクトリ(フォルダ)を検索する方法 C#では、Directory.GetDirectoriesメソッドを使うことで、指定したパス以下に存在するサブフォルダの一覧を簡単に取得できます。 Directory.GetDirectoriesの基本的な使い方 まず、検索の起点となるパスからサブフォルダの一覧を取得します。その後、取得した各ディレクトリに対して同じ処理を繰り返すことで、階層全体を効率的に検索することが可能です。 string path = @d:/New/Myfile; string[] myDir = Directory.GetDirectories(path, xml,
-
C#で2つのDictionary(辞書)をマージして結合する方法
C#では、Dictionary<string, int> 型の2つの辞書を、HashSet と UnionWith() メソッドを組み合わせることで簡単にマージできます。本記事では、その具体的な手順をサンプルコード付きで解説します。 ステップ1:2つの辞書を作成する まず、マージ対象となる2つの辞書を用意します。 Dictionary<string, int> dict1 = new Dictionary<string, int>(); dict1.Add(laptop, 1); dict1.Add(desktop, 2); Dictionary<s
-
C#のマルチスレッド処理で発生するデッドロックとスタベーション(飢餓)とは
デッドロックとは デッドロックとは、あるスレッドがリソースをロックしている状態で、別のスレッドが同時にそのリソースを必要としたときに発生する問題です。マルチプロセッシング環境では頻繁に見られる現象です。 また、2つ以上のスレッドが互いに相手のスレッドが保持するリソースを待ち続ける場合にも発生します。以下に典型的な例を示します。 スレッド1スレッド2 ロックPを取得ロックQを取得 ロックQを要求ロックPを要求 この状況では、ロックQはスレッド2が所有しているため、スレッド1はロックQを取得できません。同様に、ロックPの元の所有者はスレッド1であるため、スレッド2もロックPを取得できま
-
C#でArrayListを同期する方法|SynchronizedメソッドとSyncRootの使い方
C#でArrayListを同期する方法 C#でArrayListをマルチスレッド環境下で安全に操作したい場合、ArrayList.Synchronizedメソッドを使用することで、スレッドセーフな(同期された)ラッパーを作成できます。 また、SyncRootプロパティを利用すれば、コレクション全体を明示的にロックすることも可能です。以下は、foreachループで要素を列挙する際にSyncRootでロックを行う基本的な例です。 ArrayList arr = new ArrayList(); lock(arr.SyncRoot) { foreach (object ele in arr)
-
【C#】セマフォ(Semaphore)でスレッドの同時アクセス数を制御する方法
セマフォ(Semaphore)とは C#のSemaphore(セマフォ)クラスは、クリティカルセクションへ同時にアクセスできるスレッドの数に上限を設定するためのクラスです。データベース接続やファイルハンドルなど、限られたリソースプールへのアクセスを制御したい場面で活用されます。 セマフォは System.Threading.Semaphore 名前空間に属しており、セマフォ機能を実装するために必要なメソッドやプロパティがすべて提供されています。 セマフォの基本的な使い方 C#でセマフォを使用するのは非常にシンプルです。Semaphore オブジェクトのインスタンスを生成するだけで利用できます
-
C#でジェネリックリスト(List<T>)を複製する方法|CopyToメソッドの使い方を解説
リスト(List<T>)は、同じデータ型の要素を格納するためのジェネリックコレクションです。C#でリストの内容を複製(クローン)したい場合、CopyToメソッドを使用して配列へコピーするのが基本的な方法の一つです。まず、リストを宣言して要素を追加します。List< string > myList = new List< string >(); myList.Add(Programming); myList.Add(Web Dev); myList.Add(Database);次に、コピー先となる新しい配列を作成し、CopyToメソッドでリストの中身を複製しま
-
C#でchar型配列を文字列(string)に変換する方法
C#では、stringクラスのコンストラクタを使うことで、char型の配列を簡単に文字列へ変換できます。ここでは、その基本的な手順とサンプルコードを紹介します。1. char型配列を用意するまず、変換元となる5文字分のchar型配列を作成し、各要素に文字を代入します。char[] ch = new char[15]; ch[0] = T; ch[1] = r; ch[2] = i; ch[3] = c; ch[4] = k;2. 配列を文字列に変換するchar型配列を引数として渡せるstringコンストラクタを使用すれば、配列全体を1つの文字列にまとめられます。string str = new
-
C#で属性(Attribute)を操作する方法をわかりやすく解説
属性(Attribute)とは、クラス、メソッド、構造体、列挙型、アセンブリなど、プログラム内のさまざまな要素の動作に関する情報を、宣言的にランタイムへ伝えるためのタグです。属性を使用することで、コードに宣言的な情報(メタデータ)を追加できます。宣言タグは、対象となる要素の直上に角括弧 [ ] を付けて記述します。コンパイルされた属性情報は、実行時にリフレクション(Reflection)を使って取得・参照することが可能です。属性の基本構文属性は次のような形式で記述します。[attribute(positional_parameters, name_parameter = value, ...)
-
C#で文字列をint型(整数)に変換する方法を解説
C#では、数値として表現された文字列をint型(整数)に変換する場面がよくあります。例えば、ユーザー入力やファイルから読み込んだデータを計算に使いたい場合などです。本記事では、Int32.Parse()メソッドを使った基本的な変換方法を解説します。Int32.Parse()メソッドとはInt32.Parse()は、数字の文字列を32ビット符号付き整数(int型)に変換するためのメソッドです。変換元の文字列が有効な数値形式でない場合、FormatExceptionがスローされる点に注意してください。変換の手順まず、変換対象となる文字列を用意します。string str = 9999;次に、Int