C#

 Computer >> コンピューター >  >> プログラミング >> C#
  1. C#LINQのAllとAnyの違いとは?使い方をサンプルコードで解説

    C#のLINQには、シーケンス(コレクション)内の要素が条件を満たしているかどうかを判定するためのメソッドとして、「Any」と「All」の2つが用意されています。この2つは似たような用途で使われますが、判定のロジックがまったく異なります。AnyメソッドとAllメソッドの基本的な違いAny(predicate) メソッドは、ソースシーケンス内の要素のうち少なくとも1つが指定された述語(条件)に一致すれば true を返し、1つも一致しなければ false を返します。一方、All(predicate) メソッドは、ソースシーケンス内のすべての要素が指定された述語に一致した場合にのみ true を

  2. 【C#】複数の非同期タスクを実行し、すべての完了を待つ方法 ― Task.WaitAllとTask.WhenAllの違い

    C#では、複数の非同期タスクを並行して実行し、そのすべてが完了するのを待ちたい場面がよくあります。そんなときに活躍するのが Task.WaitAll と Task.WhenAll の2つのメソッドです。どちらも「複数タスクの完了を待つ」という目的で使われますが、動作には重要な違いがあります。 Task.WaitAll と Task.WhenAll の違い Task.WaitAll は、引数に渡されたすべてのタスクの実行が完了するまで、現在のスレッドをブロック(停止)します。そのため、呼び出し元の後続コードは、全タスクが終了するまで一切実行されません。 一方、Task.WhenAll は「他のす

  3. C#で.NETの整形されたJSONを取得する方法(Newtonsoft.Json活用ガイド)

    C#でJSONを扱う際、そのまま出力すると読みにくいことがあります。そんなときに便利なのが Newtonsoft.Json.Formatting 名前空間です。この名前空間は、JSONの出力形式を制御するための書式設定オプションを提供しています。Formattingオプションの種類Newtonsoft.Json.Formatting には、主に以下の2つのオプションがあります。None(デフォルト)特別な書式を一切適用しません。これがデフォルトの動作で、余分な空白や改行のないコンパクトなJSONが出力されます。通信データ量を抑えたい場合に適しています。Indented子オブジェクトをインデント

  4. C#で単一責任原則(SRP)を実装する方法をわかりやすく解説

    「クラスが変更されるべき理由は、たったひとつであるべきだ」――これがSOLID設計原則のひとつである単一責任原則(Single Responsibility Principle / SRP)の核心です。本記事では、この原則の意味と、C#での具体的な実装方法をコード例とともに解説します。 単一責任原則とは? 定義: ここでいう「責任」とは、クラスを変更する理由そのものを指します。 この原則によれば、あるクラスに変更理由が2つ存在する場合、その機能は2つのクラスに分割すべきです。各クラスは1つの責任のみを担当し、将来変更が必要になったときは、その責任を持つクラスだけを修正すればよいことになります

  5. C#でオープン・クローズドの原則(OCP)を実装する方法

    クラス、モジュール、関数といったソフトウェアの構成要素は、「拡張に対して開かれており(Open for Extension)、修正に対して閉じられている(Closed for Modification)」べきです。これが、SOLID設計原則のひとつであるオープン・クローズドの原則(OCP:Open Closed Principle)の核心的な考え方です。 オープン・クローズドの原則とは 定義: オープン・クローズドの原則とは、既存のコードへの変更を最小限に抑えながら、新しい機能を追加できるようにコードを設計・記述すべきという原則です。つまり、できる限り既存コードをそのまま維持しつつ、新機能を

  6. C#でプロパティを使った依存性注入(DI)の実装方法を解説

    密結合(依存関係のある)オブジェクトを、疎結合(独立した)オブジェクトへと変換しながら外部から注入する仕組みは、「依存性注入(Dependency Injection:DI)」と呼ばれます。DIを活用することで、クラス間の依存関係が弱まり、保守性やテスト容易性が大きく向上します。 依存性注入の主な4つの手法 コンストラクタ・インジェクション セッター・インジェクション インターフェースベースの注入 サービスロケータ・インジェクション セッター・インジェクションとは セッター・インジェクション(ゲッター/セッター・インジェクション)は、C#の標準的なパブリックプロパティ構文である get {

  7. C#でインターフェースベースのインジェクションを使って依存性注入(DI)を実装する方法

    結合された(依存関係のある)オブジェクトを、疎結合な(独立した)オブジェクトへと注入(変換)する仕組みを「依存性注入(Dependency Injection:DI)」と呼びます。 依存性注入の種類 DIには主に以下の4つの種類があります。 コンストラクタインジェクション セッターインジェクション インターフェースベースのインジェクション サービスロケータインジェクション インターフェースインジェクションとは インターフェースインジェクションは、ゲッター・セッターを使うDIと考え方が似ています。ただし、通常のゲッター・セッターDIが既定のアクセサを利用するのに対し、インターフェースインジ

  8. C#のリフレクションでメソッドとプロパティを一覧表示する方法

    リフレクション(Reflection)とは、コード内に存在する型、メソッド、フィールドなどのメタデータを記述し、実行時に動的に取得・操作するための仕組みです。System.Reflection名前空間を利用することで、読み込まれたアセンブリや、その中に含まれるクラス、メソッド、値型といった要素に関する情報をプログラムから参照できるようになります。 System.Reflectionの主なクラス System.Reflectionには多数のクラスが用意されていますが、特によく使用されるのは以下の通りです。 Assembly … アセンブリ自体の情報を表す AssemblyName … アセンブ

  9. C#のLINQ拡張メソッドで左外部結合(LEFT OUTER JOIN)を実装する方法

    内部結合と左外部結合の違い 内部結合(INNER JOIN)では、キーが一致する要素だけが結果セットに含まれ、一致しない要素は除外されます。 一方、左外部結合(LEFT OUTER JOIN)では、一致するすべての要素に加えて、左側のコレクション側で一致しなかった要素も結果セットに含まれます。 ここでは、具体的な例を使って左外部結合の実装方法を見ていきましょう。次のような Department クラスと Employee クラスを想定します。注目すべきポイントは、従業員 Mary には部署が割り当てられていないことです。内部結合の場合、Mary のレコードは結果セットに含まれませんが、左外部結

  10. C#のDispose()とFinalize()の違いを徹底解説

    本記事では、C#における「Dispose」メソッドと「Finalize」メソッドの違いについて詳しく解説します。どちらもアンマネージリソースの解放に関わる重要なメソッドですが、その動作方法や用途には大きな違いがあります。 Disposeメソッドとは IDisposableインターフェースで定義されているメソッドです。 ユーザー(開発者)が明示的に呼び出す必要があります。 呼び出されると、アンマネージリソースを解放します。 close()メソッドが存在する場合に実装されることがあります。 publicメソッドとして宣言されます。 処理が高速で、オブジェクトを即座に破棄できます。 即時に実行さ

  11. 【C#入門】デリゲートとイベントの違いを徹底解説!特徴と使い分けを比較

    C#を学んでいると、「デリゲート(delegate)」と「イベント(event)」という2つの仕組みに出会います。どちらもメソッドへの参照を扱う点で似ていますが、役割や使い方には明確な違いがあります。この記事では、それぞれの特徴を整理しながら、両者の違いをわかりやすく解説します。 デリゲート(Delegate)とは デリゲートは、メソッドへの参照を保持できる型であり、いわば「型安全な関数ポインタ」として機能します。主な特徴は以下の通りです。 「delegate」キーワードを使用して宣言します。 関数ポインタに相当し、実行時に1つ以上のメソッドへの参照を保持できます。 独立したキーワードであ

  12. C#のrefとoutの違いを徹底解説!初期化ルールと使い分けのポイント

    C#では、メソッドに引数を参照渡しする際に「ref」と「out」という2つのキーワードを使用できます。どちらも参照渡しを行う点は共通していますが、変数の初期化タイミングやデータの受け渡し方向など、重要な違いがいくつかあります。この記事では、それぞれの特徴をコード例とともに詳しく解説します。refキーワードとは「ref」は、変数の参照をメソッドに渡し、メソッド内でその値を読み書きできるようにするキーワードです。refの主な特徴事前の初期化が必須:refで引数を渡す前に、変数を必ず初期化しておく必要があります。メソッド内での代入は任意:呼び出されたメソッドが、呼び出し元に戻る前にパラメータを再初期

  13. Java・C#における抽象クラスとインターフェイスの違いを徹底解説

    本記事では、JavaおよびC#における「抽象クラス(abstract class)」と「インターフェイス(interface)」の違いについて、それぞれの特徴や使い分けのポイントをわかりやすく解説します。 抽象クラス(Abstract Class)とは 抽象クラスは、クラス階層の中で共通の基盤となる機能や状態を持たせたい場合に使用される仕組みです。主な特徴は以下の通りです。 メソッドの宣言だけでなく、実装(定義)も含めることができます。 複数継承は実現できません。1つのクラスが継承できる抽象クラスは1つだけです。 コンストラクタを持つことができます。 静的メンバー(staticメンバー)を

  14. C#でSelenium WebDriverを使ってブラウザウィンドウを全画面(最大化)で開く方法

    ブラウザを全画面で開く方法C#でSelenium WebDriverを使用してブラウザウィンドウを全画面(最大化)で開くには、Maximizeメソッドを使用します。このメソッドは、WebDriverオブジェクトに対して呼び出す必要があります。テスト実行時にブラウザを最大化しておくことで、画面サイズに依存するUI要素の操作や検証が安定し、テスト全体の信頼性向上にもつながります。構文driver.Manage().Window.Maximize();コード例using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Fir

  15. C#とSeleniumを使ってマウスポインタを特定の場所や要素に移動する方法

    Selenium WebDriver(C#)では、Actionsクラスを使用することで、マウスポインタを特定の場所や要素へ移動させることができます。まず最初に、Actionsクラスのオブジェクトを作成する必要があります。要素へポインタを移動するには、MoveToElementメソッドを呼び出し、引数として要素のロケーターを渡します。そして、実際にこの操作を実行するにはPerformメソッドを使用します。要素への移動後は、Clickメソッドを使ってその要素をクリックすることも可能です。また、特定の座標位置へ移動したい場合は、MoveByOffsetメソッドを使用し、X軸とY軸方向のオフセット値(

  16. C#とSelenium WebDriver:要素が存在するまで待機する方法

    Selenium WebDriverでは、明示的待機(Explicit Wait)を使用することで、ページ上に要素が存在するまで待機することができます。これは、ページの読み込み速度やJavaScriptの実行タイミングなどにより、要素がすぐに利用可能にならない同期の問題が発生しうる場面で特に役立ちます。明示的待機の実装には、WebDriverWaitクラスとExpectedConditionsクラスを使用します。WebDriverWaitオブジェクトを作成し、そのUntilメソッドを通じてExpectedConditionsクラスの期待条件を呼び出します。WebDriverは、指定された時間の

  17. C#のクラスとは?基本概念からコンストラクタまで徹底解説

    C#におけるクラスは、最も重要な型の一つです。クラスは、問題領域に関連するオブジェクトを生成するための「設計図」と考えることができます。つまり、クラスはテンプレートであり、そこからオブジェクトを作成します。クラスには、そのクラスから作られるオブジェクト群が共有する構造(データ)と振る舞い(メソッド)が定義されています。たとえるなら、クラスは「クッキーの型」であり、オブジェクトはその型で作られた「クッキー」そのものです。 カプセル化という重要な概念 クラスは、オブジェクト指向プログラミングにおける重要な概念である「カプセル化」を実現します。カプセル化とは、データと、そのデータを操作する処理を一箇

  18. C#の値型と参照型の違いを徹底解説!メモリの仕組みとサンプルコードで比較

    C#におけるすべての型は、大きく分けて「値型」と「参照型」という2つのカテゴリに分類されます。この2つの違いを正しく理解することは、バグの防止やパフォーマンスの最適化において非常に重要です。本記事では、それぞれの型の特徴、動作の仕組み、そして実際のコード例を使った挙動の違いについて詳しく解説します。 値型とは 値型の変数は、データそのものを直接保持します。各変数が独自のデータコピーを持つため、ある変数の値を変更しても、別の変数やオブジェクトには一切影響しません。 C#における値型には、以下のようなものがあります。 int、float、double などのすべての数値型 char 型および b

  19. C#と.NETエコシステムの基礎をわかりやすく解説

    C#は、オブジェクト指向で型安全(タイプセーフ)な汎用プログラミング言語であり、開発者の生産性向上に重点を置いて設計されています。表現力の高さ、シンプルさ、そしてパフォーマンスへの配慮を通じて、その生産性を実現しようとしています。また、Windows、Mac、Linuxなど、さまざまなプラットフォームで動作するのも大きな特徴です。 型安全性(Type Safety) C#は静的型付け言語です。つまり、プログラムをコンパイルする段階で型の検証が行われます。これにより、プログラムが実際に動き出す前に、多くのエラーを未然に防ぐことができるのです。 ガベージコレクション 自動メモリ管理はC#の重要

  20. C#のref・out・inキーワードの使い方と違いを徹底解説

    パラメータと引数の基本C#では、ほとんどのメソッドが0個以上の「パラメータ」を持ち、メソッドに渡すべきデータを定義します。メソッドを呼び出すコード側は、このデータを「引数」として渡します。つまり、メソッドは入力をパラメータとして宣言し、呼び出し元が引数という形で実際の値を提供する仕組みです。例として、次のメソッドとその呼び出しを見てみましょう。static void Greet(string greeting){    Console.WriteLine(greeting);}...Greet("Hello");上記の例では、gree

Total 2668 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:131/134  20-コンピューター/Page Goto:1 125 126 127 128 129 130 131 132 133 134