-
C#のMutexクラスとは?同期プリミティブの基本と使い方を解説
C#のMutex(ミューテックス)クラスは、複数のスレッドが同時に共有リソースへアクセスすることを防ぐための同期プリミティブです。単一プロセス内のスレッド同期だけでなく、プロセス間同期にも利用できる点が大きな特徴となっています。 Mutexオブジェクトの作成方法 まずは、新しいMutexインスタンスを作成する最も基本的な方法を見てみましょう。 private static Mutex m = new Mutex(); ブール値を指定して初期化する 次に、所有権の初期状態を表すブール値を引数に渡して、Mutexクラスの新しいインスタンスを初期化する方法です。trueを指定すると、呼び出し元の
-
C#のpublic・static・voidキーワードの違いをわかりやすく解説
C#プログラムを学び始めると、必ず目にするのが public、static、void といったキーワードです。これらはすべて、C#プログラムの中心的な存在である「Mainメソッド」に関わるキーワードです。 Mainメソッドとは? Mainメソッドは、すべてのC#プログラムにおけるエントリーポイント(開始地点)です。プログラムが実行されるとき、最初に呼び出されるのがこのMainメソッドであり、クラスが実行された際に何を行うかがここで定義されます。 以下は、基本的なC#プログラムの例です。 using System; class Demo { static void Main(string
-
C#でVBのモジュールに相当するものは?静的クラスの使い方を解説
VB(Visual Basic)では、モジュール(Module)を使うことで、アプリケーション内のどこからでもアクセスできるコードを格納できます。モジュールの大きな特徴は、インスタンスを生成したり初期化したりする必要がないという点です。 また、モジュール内の変数の状態は簡単に設定・変更でき、その値はアプリケーション全体を通じて保持され続けます。 同じことをC#で実現するには、静的クラス(static class)を使用します。静的クラスは、VBのモジュールと同様に、インスタンス化せずに直接メンバーへアクセスできるため、ユーティリティメソッドや共通処理の格納場所として最適です。 以下に具体的な例
-
C#のスレッドセーフな並行コレクション(Concurrent Collections)徹底解説
.NET Framework 4では、System.Collections.Concurrent名前空間が新たに導入されました。この名前空間には、スレッドセーフかつ高いスケーラビリティを実現する複数のコレクションクラスが含まれています。これらは「並行コレクション(Concurrent Collections)」と呼ばれ、複数のスレッドから同時に安全にアクセスできる点が最大の特徴です。従来のList<T>やDictionary<TKey,TValue>などをマルチスレッド環境で扱う場合は、lock文などによる明示的な同期処理が必要でしたが、並行コレクションを使えばその負担
-
C#でスタックを反転(逆順)にする方法
スタックはLIFO(Last In First Out:後入れ先出し)という特性を持つデータ構造です。この特性を活かすと、あるスタックから別のスタックへ要素を移し替えるだけで、簡単に要素の順序を反転させることができます。ここでは、C#の Stack クラスを使ってスタックを反転する方法を、具体的な手順とサンプルコード付きで解説します。 反転の手順 1. スタックの作成と要素の追加 まず、元となるスタックを作成し、Push メソッドで要素を追加します。 Stack st = new Stack(); st.Push(P); st.Push(Q); st.Push(R); 2. 反転用のスタックを
-
C#で文字列配列をソートする方法(Array.Sortの使い方)
C#では、Array.Sort()メソッドを使うことで、文字列配列を簡単にアルファベット順に並べ替えることができます。ここでは、その基本的な使い方をサンプルコードとともに解説します。1. 文字列配列を用意するまずは、並べ替え対象となる文字列の配列を定義します。string[] values = { tim, amit, tom, jack, saurav };2. Array.Sort()メソッドで並べ替える次に、Sort()メソッドを呼び出すだけで、配列の要素が昇順(アルファベット順)に並べ替えられます。特別な設定は不要で、引数に配列を渡すだけです。Array.Sort(values);完全
-
Mac OSでC#プログラムをコンパイル・実行する方法
Mac OSでC#プログラムを動かすために必要なものMac上でC#プログラムをコンパイルして実行するには、まず適切なIDE(統合開発環境)を用意する必要があります。macOS向けのIDEの中でも、特におすすめなのが「MonoDevelop」です。MonoDevelopとはMonoDevelopはオープンソースのIDEで、Windows、Linux、macOSといった複数のプラットフォームでC#プログラムを実行できるのが大きな特徴です。かつては「Xamarin Studio」という名称でも知られていました。MonoDevelopにはC#コンパイラが内蔵されており、これひとつでC#プログラムのビル
-
LinuxでC#プログラムをコンパイル・実行する方法|MonoDevelopの使い方を解説
LinuxでC#を動かすにはIDEが必要Linux上でC#プログラムをコンパイル・実行するには、まず適切なIDE(統合開発環境)を用意することが重要です。数ある選択肢の中でも、Linux環境で特に評価が高いのが「MonoDevelop」です。MonoDevelopはオープンソースのIDEで、Windows、Linux、macOSといった複数のプラットフォーム上でC#アプリケーションの開発・実行を可能にします。かつては「Xamarin Studio」という名称でも知られており、C#コンパイラを内蔵しているため、インストール後すぐにC#プログラムの開発を始められます。MonoDevelopの主な特
-
WindowsでC#プログラムをコンパイル・実行する方法を徹底解説
WindowsでC#を開発するならVisual StudioがおすすめWindows環境でC#プログラムを開発する際に最適なIDE(統合開発環境)は、Microsoftが提供する「Visual Studio」です。Webサイト、Webアプリケーション、モバイルアプリなど、幅広い種類のソフトウェア開発に対応した強力な開発ツールです。Visual Studio IDEの主な機能コードエディター − シンタックスハイライト(構文の色分け)や、IntelliSenseによるコード補完をサポートしており、快適かつ効率的にコードを記述できます。ブレークポイント − ブレークポイントを設定することで、プログ
-
C#におけるスレッドとスレッド同期の基本
マルチスレッドアプリケーションにおける同期の重要性同期(Synchronization)を利用することで、マルチスレッドアプリケーションにおいて複数のスレッドから共有リソースへのアクセスを安全に制御できます。適切な同期処理を行わないと、データ競合や予期しない動作が発生する恐れがあるため、排他制御の仕組みを正しく理解することが重要です。Mutex(ミューテックス)とはMutexは、プロセス間にまたがるスレッドの同期にも使用できる同期プリミティブです。特定のコードブロックを、同時に複数のスレッドが実行しないように排他制御する目的で利用されます。lockステートメントによる排他制御C#のlockステ
-
C#でパスワードの有効性をチェックする方法
パスワードの有効性チェックとは、Webサイトへのサインアップ時にパスワードを作成した経験を思い出せばイメージしやすいでしょう。 パスワードを設定する際、「強固なパスワードを設定してください」といった入力規則(バリデーション)を目にしたことがあるはずです。一般的な要件は以下の通りです。 8文字以上・14文字以下 大文字を1つ以上含む 小文字を1つ以上含む 特殊文字を1つ以上含む 空白文字を含まない ここからは、それぞれの条件をC#でどのように判定するのか、一つずつ見ていきましょう。 条件1:8文字以上・14文字以下であること Lengthプロパティで文字列の長さを取得し、許容範囲外であれば
-
C#でリストを複製・コピーする方法:CopyToメソッドの使い方を解説
C#でリスト(List)を複製またはコピーするには、いくつかの方法があります。本記事では、CopyTo()メソッドを使ってリストを配列へコピーする基本的な手法を中心に、わかりやすく解説します。 コピー元のリストを作成する まず、コピー元となるリストを用意します。 List<string> myList = new List<string>(); myList.Add(One); myList.Add(Two); CopyTo()メソッドで配列へコピーする 次に、文字列型の配列を宣言し、CopyTo()メソッドを呼び出してリストの内容を配列へコピーします。 strin
-
【C#】Lengthプロパティを使ってジャグ配列の長さを取得する方法
ジャグ配列とはC#におけるジャグ配列(Jagged Array)は、「配列の中に配列」を持つ構造の配列です。各要素が異なる長さの配列を持てるため、多次元配列よりも柔軟なデータ管理が可能になります。この記事では、Lengthプロパティを使用して、ジャグ配列の長さ(要素数)を取得する方法を解説します。1. ジャグ配列を宣言・初期化するまず、ジャグ配列を宣言し、初期化します。以下のコードでは、各行に長さ2のint型配列を持つ5行分のジャグ配列を作成しています。int[][] arr = new int[][] { new int[] { 0, 0 },&
-
【C#】2つのリストに共通する要素が存在するかどうかを確認するプログラム
C#では、2つの配列やリストに共通する要素が存在するかどうかを、HashSetと比較演算子(== や <)を組み合わせて効率的に確認できます。この記事では、具体的な実装方法をサンプルコード付きで解説します。最初のリストの設定まず、比較対象となる最初のリスト(整数型の配列)を設定します。int[] arr1 = { 65, 57, 63, 98 };2つ目のリストの設定続いて、2つ目のリストを設定します。int[] arr2 = { 43, 65, 33, 57 };サンプルコード以下は、== 演算子と < 演算子を使っ
-
C#でリストから重複要素を削除する方法【Distinct()メソッドの使い方】
C#でリスト(List)から重複する要素を削除したい場合、LINQのDistinct()メソッドを使うのが最もシンプルで効率的な方法です。この記事では、基本的な手順をサンプルコードとともに分かりやすく解説します。 手順1:リストを宣言して要素を追加する まず、リストを宣言し、要素を追加します。ここでは、意図的に同じ値「50」を2回追加しています。 List<int> list = new List<int>(); list.Add(50); list.Add(90); list.Add(50); list.Add(100); 手順2:Distinct()メソッドで重複を
-
指定された値より大きいリスト内のすべての値をチェックするC#プログラム
例えば、次の整数型配列の中から、80より大きい値を持つ要素をすべて見つけたい場合を考えてみましょう。int[] arr = new int[] {55, 100, 87, 45};基本的な考え方これを実現するには、配列の長さ分だけループ処理を行い、各要素が指定された値(ここでは res = 80)より大きいかどうかを条件判定します。条件を満たす要素だけを出力すればよいので、ロジックは非常にシンプルです。for (int i = 0; i < arr.Length; i++) { if (arr[i] > res) { &n
-
C#でリストから一意の値(重複なし)を抽出して表示する方法
C#では、LINQのDistinct()メソッドを使うことで、リストから重複する要素を取り除き、一意の値だけを簡単に抽出できます。ここでは、その基本的な使い方と実際の実行例をわかりやすく紹介します。リストの作成まず、サンプルとなるリストを作成します。List<int> list = new List<int>(); list.Add(99); list.Add(49); list.Add(32);一意の要素を取得する方法重複を除いた一意の要素を取得するには、Distinct()メソッドを使用し、その結果をToList()でリストに変換します。List<int>
-
C#でHashSetから要素を削除する方法|RemoveWhereの使い方を解説
C#のHashSet<T>から特定の要素を削除したい場合、条件を指定して一括削除できるRemoveWhereメソッドが便利です。この記事では、HashSetの作成から要素の削除までの一連の手順を、実際のコード例とともにわかりやすく解説します。 1. HashSetの宣言と要素の追加 まず、文字列型のHashSetを宣言し、Addメソッドを使って複数の要素を追加します。 var names = new HashSet<string>(); names.Add(Tim); names.Add(John); names.Add(Tom); names.Add(Kevin);
-
C#で文から重複する単語をすべて削除する方法
C#では、LINQのDistinct()メソッドを活用することで、文字列に含まれる重複する単語を簡単に削除できます。この記事では、具体的なサンプルコードとその実行結果を交えながら、手順をわかりやすく解説します。重複する単語を含む文字列の準備まずは、重複する単語が含まれた文字列を用意します。次の例では、「One」という単語が2回出現しています。string str = One Two Three One;この文字列から重複を取り除き、各単語を1回だけ表示させるのが今回の目的です。サンプルコード重複する単語を削除するには、以下のコードを実行します。処理の流れは次のとおりです。Split( )メソッ
-
C#で文字列内の特殊文字を置き換える方法
C#では、Replace()メソッドを使うことで、文字列に含まれる特定の文字(特殊文字など)を簡単に別の文字へ置き換えることができます。 置き換え前の文字列 ここでは、次のような文字列を例に考えます。「$」という特殊文字が含まれています。 string str = abcd$ef$gh; Replace()メソッドによる置き換え 特殊文字を置き換えるには、Replace()メソッドを使用します。第一引数に置き換え対象の文字、第二引数に置き換え後の文字を指定します。 string res = str.Replace($, k); このコードでは、「$」がすべて「k」に置き換えられます。 サンプル