Nobuyuki Iwanaga

Results 136 comments of Nobuyuki Iwanaga
trafficstars

`extension(T)` の中に `T?` の operator 書くのダメらしい。 ```cs S1? s1 = new S1(); s1 = +s1; // Error: no matching operator s1 = +s1.Value; // Ok public struct S1; public static...

```cs // ない、引数 x に使わない型 Y があっても平気。 extension(X x) { } ``` 特に演算子書くのにこれが必要っぽい。 ```cs extension(X) { public static X operator +(X x, Y y) => default; } ``` ちなみに、呼ぶ側: ```cs...

式ツリーの中でだけ使えない extension もあるらしい。 `&&` と `||`。 対応するファクトリメソッドが Expression 型にないとのこと。

extern と UnsafeAccessor も使えるらしい。 ```cs using System.Runtime.CompilerServices; using var stream = new MemoryStream(); var x = stream._buffer; Console.WriteLine(x is null); static class Accessors { extension(MemoryStream stream) { [UnsafeAccessor(UnsafeAccessorKind.Field)] public extern...

in の有無でオーバーロードあり事案: ```cs int.Static(); // こっちは ambiguous 1.Instance(); // こっちは (int x) の方が選ばれる static class E1 { extension(int x) { public static void Static() { } public void Instance() {...

readonly 修飾子ダメ。

```cs // この A と B、全く同じ拡張メソッドのはずなんだけど、A だけエラーになる。 // (そういう仕様。) // 確かに元々 B の形で書けても、呼ぶ側では弁別できなくて拡張メソッドとしては呼べない。 static class A { extension(int x) { public void M() { } } extension(ref int x) {...

https://github.com/ufcpp-live/UfcppLiveAgenda/issues/91

おまけというか、これ関連どこに書くか見てて気づいた別件: ほんとは https://github.com/ufcpp/UfcppSample/issues/413 関連。 UnscopedRef の話は ↓ この辺りにも書くべきかも。 https://ufcpp.net/study/csharp/sp_ref.html?p=2#struct-this

https://ufcpp.net/study/csharp/cheatsheet/ap_ver13/#ref-in-async https://ufcpp.net/study/csharp/sp5_async.html#restriction https://ufcpp.net/study/csharp/sp2_iterator.html#restriction https://ufcpp.net/study/csharp/resource/refstruct/#stack-only