C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の隠れた便利機能とは?知っておきたい4つの活用テクニック

C#には、日常的な開発で見落とされがちですが、使いこなすとコードをより簡潔かつ安全にできる「隠れた」便利な機能が数多く存在します。ここでは、特に実用性の高い4つの機能をわかりやすく解説します。

1. ラムダ式(Lambda Expressions)

ラムダ式は、匿名関数を簡潔に記述するための構文です。式の中で => というトークンを使用し、これは「ゴーズ・トゥ(goes to)演算子」と呼ばれます。左辺に入力パラメータ、右辺に処理内容や戻り値となる式を書きます。

// 例:リストから偶数だけを抽出する
var evenNumbers = numbers.Where(n => n % 2 == 0);

ラムダ式はLINQと組み合わせることで威力を発揮し、従来は複数行必要だった処理を1行で表現できます。デリゲートやFunc<T>、Action<T>などと併用する場面も非常に多いのが特徴です。

2. Null許容型(Nullables)

C#では、値型にnullを代入することは通常できません。しかしNull許容型を使えば、通常の範囲の値に加えてnullも代入できるようになります。データベースのNULL値を扱う際などに特に役立ちます。

宣言の構文は以下の通りです。

<data_type>? <variable_name> = null;

// 使用例
int? age = null;
if (age.HasValue)
{
    Console.WriteLine(age.Value);
}

HasValueプロパティで値の有無を確認し、Valueプロパティで実際の値にアクセスできます。

3. null合体演算子(??)

null合体演算子 ?? は、Null許容型や参照型と組み合わせて使用される演算子です。左辺のオペランドがnullでない場合はその値を、nullである場合は右辺の値を返します。暗黙的な変換が可能な別の型へ変換する際にも利用されます。

// 例:nameがnullの場合は"名無し"を代入
string displayName = name ?? "名無し";

if文によるnullチェックを1行にまとめられるため、デフォルト値の設定などをスマートに記述できます。C# 8.0以降では ??=(null合体代入演算子)も追加され、さらに簡潔な記述が可能になりました。

4. as演算子

as 演算子は、互換性のある型同士の変換を行います。キャスト操作に似ていますが、変換に失敗した場合に例外をスローせずnullを返す点が大きな違いです。変換できるのは参照変換、Null許容変換、ボックス化変換のみで、ユーザー定義の変換は行えません。そのような場合は通常のキャスト式を使用します。

// 例:objectからstringへの安全な変換
string text = obj as string;
if (text != null)
{
    Console.WriteLine(text.Length);
}

失敗時に例外が発生しないため、型が不確かなオブジェクトを扱う際にtry-catchブロックを書く必要がなく、コードがすっきりします。C# 7.0以降はパターンマッチング(is 演算子との組み合わせ)でも同様の処理をより安全に記述できるようになっています。

まとめ

ラムダ式、Null許容型、null合体演算子、as演算子は、いずれもC#のコードをより簡潔で堅牢にするための強力な機能です。これらを適切に使い分けることで、nullチェックの冗長さを減らし、可読性の高いモダンなC#コードを書けるようになります。

  1. C#のコメントとは?複数行・単一行コメントの書き方を解説

    コメントは、コードの内容や意図を説明するために記述する注釈です。コンパイラはコメント部分を完全に無視するため、プログラムの動作には一切影響しません。C#では、複数行にわたるコメントは「/*」で始まり、「*/」で終わります。 複数行コメント /* 以下はC#における 複数行コメントの例です */ 「/* ... */」で囲まれた範囲はすべてコンパイラによって無視されます。処理の概要や注意点など、複数行にわたる説明を残したい場合に使用します。 単一行コメント // 変数の宣言 int a = 10; 単一行コメントは「//」から行末までがコメントとして扱われます。変数の意味や処理の意図を手軽にメモ

  2. OSのカーネルとは?役割・仕組みと5つの種類をわかりやすく解説

    Windows、macOS、Linux、Androidなど、あらゆるオペレーティングシステム(OS)には「カーネル(Kernel)」と呼ばれる中核プログラムが存在します。カーネルはシステム全体の「ボス」のような存在であり、まさにOSの心臓部です。コンピューター上で起こるあらゆる処理はカーネルを経由し、他のすべてを制御するコンピュータープログラムでもあります。本記事では、OSにおけるカーネルとは何か、そしてカーネルにはどのような種類があるのかを詳しく解説します。 OSにおけるカーネルとは カーネルはOSの中核プログラムであるだけでなく、ブートローダーの実行後に最初に読み込まれるプログラムでもあり