C#

 Computer >> コンピューター >  >> プログラミング >> C#
  1. C#のintとInt32の違いとは?エイリアスの仕組みと使い分けを解説

    C#では、32ビット整数を扱う方法として「int」と「Int32」の2つの記述があります。一見すると別々の型のように見えますが、実は本質的な違いはほとんどありません。intとInt32の基本的な関係Int32は.NETフレームワークが提供する構造体(System.Int32)であり、intはC#言語においてInt32に付けられたエイリアス(別名)です。Int32 x = 5;int x = 5;上記の2つの宣言は、どちらも同じ32ビット整数を保持します。コンパイルされた結果は完全に同一のコードになるため、実行時のパフォーマンスや動作に一切の違いはありません。唯一の小さな違いわずかな違いとして、

  2. C#の「??」演算子とは?null合体演算子の意味と使い方をわかりやすく解説

    C#における2つの疑問符を並べた記号 ?? は、null合体演算子(null-coalescing operator)と呼ばれるものです。この演算子は、左辺のオペランドがnullでない場合はその値をそのまま返し、nullである場合には右辺のオペランドを評価して、その結果を返します。また、左辺がnullでないと評価された場合、右辺は一切評価されないという特徴もあります。null許容型と??演算子の関係null許容型(nullable型)は、「値が未定義である状態」と「型のドメインに属する通常の値」のどちらも表現できる型です。左辺のオペランドがnull許容型である場合に、??演算子を使うことで適切

  3. C#で文字列の前に付ける「@」とは?逐語的文字列リテラルの意味と使い方

    文字列の前に付いた @ は、その文字列が逐語的文字列リテラル(verbatim string literal)であることを示す記号です。C#では、@ を使うことで特別な形式の文字列を作成できます。この @ は「逐語的識別子(verbatim identifier)」と呼ばれます。文字列の先頭に @ を付けると、コンパイラはその文字列を逐語的文字列として認識し、通常のエスケープ処理を行わずにコンパイルします。この記号の最大のメリットは、文字列内のエスケープ文字(\n や \t など)や改行を無視して、書かれた通りに解釈させることです。特に Windows のファイルパスのようにバックスラッシュ(

  4. C#で使えるアクセス修飾子の種類とは?6つの修飾子の違いを徹底解説

    アクセス修飾子(Access Modifier)とは、クラスのメンバーやクラスそのものに対するアクセス範囲(可視性)を指定するためのキーワードです。C#には、以下の6種類のアクセス修飾子が用意されています。public(パブリック)private(プライベート)protected(プロテクテッド)internal(インターナル)protected internal(プロテクテッド・インターナル)private protected(プライベート・プロテクテッド)public:すべての場所からアクセス可能public を付けたメンバーは、プロジェクト内のどこからでも制限なくアクセスできます。外部に

  5. C#のメソッドで使える3種類のパラメーター(値渡し・参照渡し・出力)を徹底解説

    C#におけるメソッドとは、プログラム内で特定の処理をまとめたコードブロックのことです。メソッドを使うことで、同じコードを何度も書き直す必要がなくなり、メモリの無駄な消費を抑えられるだけでなく、開発時間の短縮にもつながります。さらに、処理を部品化することでコード全体の可読性が大きく向上する点も大きなメリットです。メソッドを実行する際、その処理を完了させるために外部から値を受け取りたいケースはよくあります。このようにメソッドに渡される入力値のことをパラメーター(引数)と呼びます。C#では、パラメーターをメソッドに渡す方法として、主に以下の3種類が用意されています。値パラメーター(Value Par

  6. C#のSystem.StringクラスとSystem.Text.StringBuilderクラスの違いとは?どちらを使うべきか解説

    主な違い:Stringは「不変」、StringBuilderは「可変」C#におけるSystem.StringクラスとSystem.Text.StringBuilderクラスの最大の違いは、StringBuilderが可変(ミュータブル)であるのに対し、Stringが不変(イミュータブル)であるという点です。Stringクラス(不変・Immutable)Stringは不変(immutable)な型です。つまり、一度文字列オブジェクトを作成すると、その内容を後から変更することはできません。文字列に対して何らかの変更操作を行うと、毎回メモリ上に新しい文字列オブジェクトが生成されます。StringBu

  7. C#のインターフェイス内でアクセス修飾子を指定できないのはなぜ?理由とC# 8での変更点を解説

    インターフェイスのメソッドは、外部との間で交わされる「契約(コントラクト)」です。この契約により、インターフェイスを実装するクラスが特定の一連の処理を必ず行うことが保証されます。 インターフェイスのメンバーが常にpublicである理由 インターフェイスのメンバーは常にpublicとして扱われます。これは、インターフェイスの目的そのものが「他の型からクラスや構造体へアクセスできるようにする」ことにあるためです。もしメンバーがprivateやprotectedであれば、外部から呼び出せず、契約としての意味を成さなくなってしまいます。 一方で、インターフェイス自体にはinternalなどのアクセス修

  8. 【C#】メソッドから複数の値を返す4つの方法(ref・out・配列・タプル)

    C#では、1つのメソッドから複数の値を返したい場面がよくあります。C#には主に以下の4つのアプローチがあります。ref(参照)パラメータを使うout(出力)パラメータを使う配列を返すタプル(Tuple)を返すそれぞれの方法について、コード例と実行結果とともに詳しく解説します。1. ref(参照)パラメータを使う方法ref キーワードを使うと引数を参照渡しでき、メソッド内で変更した値が呼び出し元にも反映されます。通常の戻り値と組み合わせることで、実質的に2つの値を受け取ることが可能です。なお、ref 引数に渡す変数は、呼び出し前に初期化しておく必要があります。コード例class Program{

  9. C#の自動実装プロパティ(Auto-Property)にデフォルト値を設定する方法

    C# 5.0以前では、自動実装プロパティ(Auto-Property)に初期値を与えるには、コンストラクタ内で値を設定する必要がありました。コンストラクタはクラスがインスタンス化される際に自動的に呼び出されるため、そのタイミングでプロパティに値を設定することができます。C# 6.0以降では、通常の変数への代入と同じような記述で、プロパティ宣言時に直接初期値を設定できる新しい構文が導入されました。これにより、コードがより簡潔になり、可読性も向上します。例1:コンストラクタで値を設定する方法(C# 5.0以前)class Demo{ public Demo(){ First

  10. C#でタプルを使うのはどんなとき?活用シーンとサンプルコードを解説

    C#におけるタプル(Tuple)は、主に以下のような場面で活用されるデータ構造です。ref や out パラメータを使わずに、メソッドから複数の値を返したいとき1つのパラメータだけで、複数の値をメソッドへ渡したいときさらに、タプルは入れ子(ネスト)にすることもできるため、柔軟なデータのまとまりとして扱えるのが特徴です。ここでは、代表的な2つの使い方をサンプルコードとともに紹介します。例1:タプルを引数として渡すタプルを1つの引数として渡すことで、複数の値をまとめてメソッドに受け渡せます。class Program{ static void DisplayTupleValues(Tupl

  11. C#の静的コンストラクターとは?呼び出し方法と実行タイミングを徹底解説

    C#における静的コンストラクター(static constructor)は、開発者が明示的に呼び出すことはできません。最初のインスタンスが生成される前、または静的メンバーが初めて参照される前に、共通言語ランタイム(CLR)によって自動的に呼び出される仕組みになっています。そのため「静的コンストラクターを呼び出す方法」は存在せず、実行のタイミングもプログラマーが制御することはできません。静的コンストラクターの役割静的コンストラクターは主に以下の目的で使用されます。静的なデータ(staticフィールド)の初期化アプリケーション内で一度だけ実行する必要がある特別な処理の実行なお、C#では1つのクラス

  12. C#で同じクラス内の別のコンストラクターからコンストラクターを呼び出す方法(this / base キーワードの使い方)

    C#では、同じクラス内にある別のコンストラクターを呼び出すには this キーワードを使用します。コンストラクター宣言の末尾に「: this(...)」という形式で引数を渡すことで、オーバーロードされた別のコンストラクターへ処理を委譲できます。一方、親クラス(基底クラス)に存在するコンストラクターを呼び出したい場合は、base キーワードを使用します。こちらも同様に「: base(...)」という形式で記述します。例1:this キーワードで同じクラスのコンストラクターを呼び出す以下の例では、3つの引数を持つコンストラクターが、2つの引数を持つコンストラクターを呼び出し、さらにそのコンストラク

  13. 【C#】静的クラスのインスタンスが1つだけ生成されることを証明する方法

    C#では、静的クラス(static class)はアプリケーション全体でただ1つのインスタンスしか持ちません。本記事では、静的変数を活用して、この仕組みを実際にコードで証明する方法を解説します。静的クラスと静的変数の仕組み静的クラス内で宣言された静的変数は、いわばグローバル変数のように扱われます。そのため、プログラムの実行中に何度アクセスしても値が保持され続け、リセットされることはありません。この性質を利用すると、静的コンストラクタが呼び出されるのが一度だけであること、そしてインスタンスが複数生成されないことを簡単に確認できます。サンプルコード以下の例では、静的クラス Demo を作成し、静的

  14. 【C#】LINQのSelectとSelectManyの違いをサンプルコードでわかりやすく解説

    はじめにC#のLINQにおけるSelectとSelectManyは、どちらもシーケンス(コレクション)の各要素を変換する「プロジェクション演算子」に分類されます。しかし、両者は返す結果の構造が大きく異なり、この違いを正しく理解することがLINQを使いこなすうえで非常に重要です。Select演算子の特徴Selectは、ソースシーケンスの各要素に対して1つの結果値を生成する演算子です。入力の要素数と出力の要素数は必ず一致し、オブジェクトのコレクションから特定のプロパティを抽出したり、値を変換したりする場面でよく使われます。SelectMany演算子の特徴SelectManyもプロジェクション演算子

  15. C#の1つのクラスに含められるデストラクタはいくつ?特徴と使い方を解説

    C#におけるデストラクタ(ファイナライザ)は、クラスが持つ特殊なメソッドの一つで、クラスのオブジェクト(インスタンス)を破棄する際に使用されます。結論から言うと、1つのクラス内に定義できるデストラクタは1つだけです。2つ以上宣言するとコンパイルエラーが発生します。C#のデストラクタの主な特徴デストラクタは引数(パラメータ)を受け取りません名前の先頭にチルダ記号(~)を付けて宣言します構造体(struct)の中ではデストラクタを定義できませんデストラクタは明示的に呼び出すことはできず、自動的に呼び出されますデストラクタは、オブジェクトの基底クラスのFinalizeメソッドを暗黙的に呼び出しますデ

  16. C#で子クラスから基底クラスのコンストラクターを明示的に呼び出す方法

    概要C#では、thisキーワードを使用することで、同じクラス内の別のコンストラクターを呼び出すことができます。一方、親クラス(基底クラス)側に存在するコンストラクターを呼び出したい場合は、baseキーワードを使用します。例基底クラスのコンストラクターを明示的に呼び出すには、派生クラスのコンストラクター宣言の後ろに「: base(引数)」を付けて呼び出します。以下のコードでは、派生クラス「Demo」のコンストラクターから、基底クラス「DemoBase」のコンストラクターを引数付きで呼び出しています。class DemoBase{    public Dem

  17. C#のビルド・リビルド・クリーンの違いとは?正しい使い分けを解説

    Visual StudioでC#アプリケーションを開発していると、「ビルド」「リビルド」「クリーン」という3つのメニューをよく目にします。一見似たような操作に思えますが、それぞれ内部で行われる処理が異なり、状況に応じた使い分けが重要です。本記事では、各機能の違いと、実務で役立つ使い分けのポイントをわかりやすく解説します。ビルド(Build):変更されたファイルだけをコンパイル「ソリューションのビルド」は増分ビルド(インクリメンタルビルド)を実行します。前回のビルド以降に変更があったコードファイルのみをコンパイルし、DLLやEXEとして出力します。変更されていないファイルには一切手を加えないため

  18. C# LINQのUnion・Intersect・Except演算子とは?違いと使い方を実例で解説

    C#のLINQには、複数のコレクションを操作するための集合演算子が用意されています。代表的なものが「Union(和集合)」「Intersect(積集合)」「Except(差集合)」の3つです。それぞれの動作の違いを理解しておくと、データの絞り込みや結合処理を簡潔に記述できるようになります。 Union(和集合) Unionは、複数のコレクションを1つに結合し、重複を除いた一意な要素だけを持つ新しいコレクションを返します。両方のシーケンスに含まれる要素は1回だけ出力される点が特徴です。 Intersect(積集合) Intersectは、両方の入力シーケンスに共通して存在する要素のみを返します。

  19. C#の明示的なインターフェイス実装とは?使いどころをわかりやすく解説

    明示的なインターフェイス実装とは C#では、1つのクラスが「同じシグネチャを持つメンバー」を含む複数のインターフェイスを実装することがあります。この場合、通常の方法でメンバーを実装すると、両方のインターフェイスが同一の実装を共有してしまうことになります。 そこで活用されるのが明示的なインターフェイス実装(Explicit Interface Implementation)です。これは、インターフェイス型を通じてのみ呼び出せるクラスメンバーを作成する手法で、インターフェイスごとに個別の実装を提供できます。 コード例 interface ICar{ void display(); } i

  20. C#におけるファイナライザーとDisposeの違いとは?リソース解放の正しい実装方法

    C#でオブジェクトの後始末を行う方法には、「ファイナライザー(Finalize)」と「Dispose」の2つがあります。どちらもリソースの解放に関わりますが、呼び出されるタイミングも役割もまったく異なります。本記事では、それぞれの仕組みと使い分けのポイントをコード例とともに解説します。 ファイナライザー(Finalize)とは Finalize()は、ガベージコレクタ(GC)が回収対象のオブジェクトを実際に破棄する前に呼び出すメソッドです。参照されなくなったオブジェクトのメモリ解放はガベージコレクタが責任を持って行い、その過程でこのメソッドが実行されます。 ただし、フレームワーク側では「いつ」

Total 2668 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:121/134  20-コンピューター/Page Goto:1 115 116 117 118 119 120 121 122 123 124 125 126 127