5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】知っておきたい簡略化テクニック12選

Last updated at Posted at 2024-12-26

はじめに

C#での一般的な処理について、従来の書き方と簡潔な書き方を比較しながら紹介します。

1. 条件による値の設定

従来の書き方

if (hasDetailView)
{
    this.Width = 627;
}
else
{
    this.Width = 527;
}

簡潔な書き方(三項演算子)

this.Width = hasDetailView ? 627 : 527;

2. nullチェックと値の代入

従来の書き方

string name;
if (user.Name != null)
{
    name = user.Name;
}
else
{
    name = "Guest";
}

簡潔な書き方(null合体演算子)

string name = user.Name ?? "Guest";

3. オブジェクトの階層的なnullチェック

従来の書き方

string city = null;
if (address != null)
{
    if (address.Prefecture != null)
    {
        if (address.Prefecture.City != null)
        {
            city = address.Prefecture.City;
        }
    }
}

// デフォルト値を設定する場合
if (city == null)
{
    city = "Unknown";
}

簡潔な書き方(null条件演算子)

// 通常の参照
string city = address?.Prefecture?.City;

// デフォルト値を設定する場合
string city = address?.Prefecture?.City ?? "Unknown";

4. 曜日による処理分岐

従来の書き方

string GetBusinessHours(DayOfWeek day)
{
    switch (day)
    {
        case DayOfWeek.Saturday:
        case DayOfWeek.Sunday:
            return "10:00-18:00";
        default:
            return "9:00-20:00";
    }
}

簡潔な書き方(スイッチ式)

string GetBusinessHours(DayOfWeek day) => day switch
{
    DayOfWeek.Saturday or DayOfWeek.Sunday => "10:00-18:00",
    _ => "9:00-20:00"
};

5. リストの初期化と値の追加

従来の書き方

var products = new List<string>();
products.Add("Product A");
products.Add("Product B");
products.Add("Product C");

簡潔な書き方(コレクション初期化子)

var products = new List<string> { "Product A", "Product B", "Product C" };

6. メソッドの戻り値の計算

従来の書き方

public int Add(int a, int b)
{
    return a + b;
}

簡潔な書き方(ラムダ式)

public int Add(int a, int b) => a + b;

7. 文字列の連結

従来の書き方

string message = "User: " + user.Name + ", Age: " + user.Age + " years old";

簡潔な書き方(文字列補間)

string message = $"User: {user.Name}, Age: {user.Age} years old";

8. 複数の戻り値の返却

従来の書き方

public class CalcResult
{
    public int Sum { get; set; }
    public double Average { get; set; }
}

public CalcResult Calculate(int[] numbers)
{
    return new CalcResult 
    { 
        Sum = numbers.Sum(),
        Average = numbers.Average() 
    };
}

簡潔な書き方(タプル)

public (int Sum, double Average) Calculate(int[] numbers)
    => (numbers.Sum(), numbers.Average());

9. ファイルの読み込み

従来の書き方

string content;
using (var reader = new StreamReader("file.txt"))
{
    content = reader.ReadToEnd();
}

簡潔な書き方(using宣言)

using var reader = new StreamReader("file.txt");
string content = reader.ReadToEnd();

10. 型チェックと変換

従来の書き方

if (obj is string)
{
    string str = (string)obj;
    Console.WriteLine(str.Length);
}

簡潔な書き方(パターンマッチング)

if (obj is string str)
{
    Console.WriteLine(str.Length);
}

11. 配列の一部取得

従来の書き方

var subset = array.Skip(2).Take(3).ToArray();

簡潔な書き方(範囲演算子)

var subset = array[2..5];

12. オブジェクトの初期化

従来の書き方

var user = new User();
user.Name = "John";
user.Age = 30;
user.Email = "john@example.com";

簡潔な書き方(オブジェクト初期化子)

var user = new User 
{
    Name = "John",
    Age = 30,
    Email = "john@example.com"
};

まとめ

この記事で紹介した簡潔な書き方には、以下のようなメリットがあります。

  1. コードの行数が減少
  2. 可読性の向上
  3. バグの混入リスクの低下
  4. メンテナンスの容易さ

ただし、チームの習熟度やプロジェクトの要件に応じて、適切な書き方を選択することが重要です。

参考文献

5
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?