ufcpp-live / UfcppLiveAgenda

@ufcpp live streaming agenda
MIT License
24 stars 2 forks source link

メモ書き #85

Open ufcpp opened 5 months ago

ufcpp commented 5 months ago

C# 13 向けの作業がちらほら。

https://github.com/ufcpp-live/UfcppLiveAgenda/issues/86 で話した:

https://github.com/ufcpp-live/UfcppLiveAgenda/issues/87 で話した:

まだ:

しばらくネタをため込んでしまったために大量に… 一気に書くと大変なので、1個ずつブログにしようかと。

コレクションがらみ C# 13 向けの改善

7913

パターンベースlock

7770

当初は「System.Threading.Lock の誤用さえ避けれればいいので、lock ステートメントを変更するんじゃなくて、単に lock (LockObject) に警告を出す」って話もあったけども。 実装始まってそう。

Extensions

7771, 7777, 7874 7928

ついに作業始まってそう。

静的メンバーの拡張 → インスタンスメンバーの拡張 → 継承 → インターフェイス実装 の4段階で実装していく予定。 C# 13 目標は3つ目まで。

当初案は ref struct だった。

// extension X for T
ref struct X
{
    ref T __this;
}

// X x = t;
X x = new X(ref t);

今は、「Unsafe.As<T, X>(ref t) で無理やり変換」な案に移行。

// extension X for T
struct X
{
    T __this;
}

// X x = t;
ref X x = ref Unsafe.As<T, X>(ref t);

type erasure で行くみたい。