ufcpp / UfcppSample

http://ufcpp.net/ 向けのサンプル
Apache License 2.0
136 stars 39 forks source link

partial property #474

Closed ufcpp closed 2 months ago

ufcpp commented 4 months ago

書くのは

https://ufcpp.net/study/csharp/oo_class.html#contextual-partial-keywordhttps://ufcpp.net/study/csharp/oo_class.html#extended_partial_method の直後かな。

partial class A
{
    public partial int X { get; }
}
partial class A
{
    public partial int X => 0;
}

多分一番うれしいのは GeneratedRegex

partial class A
{
    [GeneratedRegex(@"\d+")]
    public static partial Regex X { get; }
}

自動実装と宣言の区別付かない問題

partial class A
{
    public partial int X { get; } // partial がついてるということはこれは宣言。

    public int Y { get; } // これは自動実装。
}

partial class A
{
    public partial int X { get; } // partial で自動実装はできないので、こっちも宣言。「実装がない」エラーになる。
}

この問題は元から:

interface IA
{
    int X { get; } // これは宣言。
}

class A : IA
{
    public int X { get; } // これは get-only プロパティ(自動実装)。フィールドが自動的にできる。
}

event も。

インターフェイスが元からなのもあるし、雑記ページでも新設? 少なくとも https://ufcpp.net/study/csharp/oo_class.html#partial に書くのははばかられる。

ufcpp commented 2 months ago

https://ufcpp.net/study/csharp/cheatsheet/ap_ver13/#partial-property https://ufcpp.net/study/csharp/misc/partial-type/#partial_property

https://ufcpp.net/study/csharp/oo_class.html#partial アンカーだけ残して、 https://ufcpp.net/study/csharp/misc/partial-type に誘導。