2025-12-09
この記事は
プログラミング言語の特有構文 Advent Calendar 2025
https://adventar.org/calendars/12640個人的な好みを交えて紹介します。
二分探索のサンプルコード
言語の特徴をあえて使い実装している。
// C# - パターンマッチング + switch式 + null許容型
using System;
using System.Collections.Generic;
class Program
{
static int? BinarySearch<T>(IList<T> arr, T target) where T : IComparable<T>
{
var (left, right) = (0, arr.Count - 1);
while (left <= right)
{
var mid = (left + right) >> 1;
(left, right) = arr[mid].CompareTo(target) switch
{
0 => (mid, mid), // 見つかった
< 0 => (mid + 1, right),
> 0 => (left, mid - 1)
};
if (arr[mid].CompareTo(target) == 0) return mid;
}
return null;
}
static void Main()
{
var arr = new[] { 1, 3, 5, 7, 9 };
Console.WriteLine(BinarySearch(arr, 5) ?? -1); // 2
}
}ピックアップ構文
switch 式 (C# 8.0+)
値を返す式として使える switch 文。
// 式として値を返す
var result = value switch
{
1 => "one",
2 or 3 => "two or three",
> 10 => "large",
_ => "other"
};
// タプルパターン
var quadrant = (x, y) switch
{
(> 0, > 0) => "Q1",
(< 0, > 0) => "Q2",
(< 0, < 0) => "Q3",
(> 0, < 0) => "Q4",
_ => "origin or axis"
};