-
-
Notifications
You must be signed in to change notification settings - Fork 40
Open
Labels
Description
csharplang 8480
https://github.com/dotnet/csharplang/blob/main/proposals/unbound-generic-types-in-nameof.md
Console.WriteLine(
// <> とか <,> とかが許されるように。
nameof(IDictionary<,>.Values)
);
今までだと nameof(T<int>)
みたいになんでもいいから具象型を型引数に入れとかないとダメだった。
(しかもこれで得られる文字列は T
だけ。int
の部分は無価値。)
単に「短く書けるようになった」というだけではなくて、
「型引数にどうやっても具象型を渡せない」みたいなことも原理的にはあり得るので一応「できなかったことができる」価値なくはないらしい。
(とはいえ、「型引数にどうやっても具象型を渡せない」を再現するの無茶苦茶難しい。)
(where 句によっては「無駄にダミーの派生型を作ってそれを渡さないとダメ」みたいな苦しい状況は簡単に起こる。)
素人目戦だと「最初から認めろよ」みたいなところあるものの、一応、
「A<>.StaticMember
とは書けないけど nameof(A<>.Member)
とは書ける」みたいなのがあって、
そこそこ実装コストがあって今まで放置だったとのこと。