UfcppSample
UfcppSample copied to clipboard
C# 13
- [x] #466
- [x] #465
- [x] #473
- [x] #474
- [x] #463
- [ ] #456
- [x] #478
- [x] コレクション式
- 拡張メソッドの Add も見る
- オーバーロード解決の改善
微々たるやつ
- [x] #464
- [x] #470
- [x] #469
プレビューとして動いてはいる(正式に入るのは14)
- [ ] #467
- [x] #468
入らなかった
- [ ] #471
- [ ] partial キーワードの順序緩和
コレクション式に多少破壊的変更が入ってるのは書く?
https://github.com/ufcpp-live/UfcppLiveAgenda/issues/89#issuecomment-2047602991
roslyn 73256
memo: ↓これ緩和されるんだっけ?
using System.Collections;
using System.Runtime.CompilerServices;
A a = [1];
[CollectionBuilder(typeof(A), nameof(Create))]
class A
{
// Builder の方はいまだ、この GetEnumerator がないとダメ。
public IEnumerator GetEnumerator() => throw new NotImplementedException();
public static A Create(ReadOnlySpan<object> x) => new();
}
A. 緩和されてない
コレクション式、改善もある
https://github.com/ufcpp-live/UfcppLiveAgenda/issues/89#issuecomment-2053653416
https://ufcpp.net/blog/2024/2/overload-resolution-priority/ は入るのかどうか。 Language Feature Status には並んでないけど、「これは language feature じゃなくて compiler feature だから」という可能性あり。
ちなみに、これの優先度付けは「同じ型で定義されているメソッド間のみ」とのこと。 インスタンスメソッドを拡張メソッドで優先度乗っ取りできないし、 2つのクラスに分かれた拡張メソッド群は、それぞれのクラスで優先度並べ替えたあと、それぞれの最優先メソッドを比較してオーバーロード解決。
そういや、C# 12 のときの ExperimentalAttribute 話とかも書いてない。 これは Language Feature Status に並んでる。
https://github.com/dotnet/csharplang/blob/f7700ff9fe7729dc865a77fd911b520cd35d36f5/proposals/csharp-13.0/collection-expressions-better-conversion.md
これも C# 13 で入れるっぽい。 VS 17.12p3 に merge されてるらしい。
コレクション式のオーバーロード解決時に、
C.M([1, 2, 3]);
class C
{
public static void M(List<int> _) { }
public static void M(List<byte> _) { }
}
みたいな要素の型(整数リテラルは int にも byte にも変換される)の時のオーバーロード解決が C# 12 だとできなかったのを改善するという話。
書いてないの interceptor だけだしこれはもう閉じちゃうかな。