1

次のように、通常のクラスと部分クラスを組み合わせることは可能ですか?

public class ClassA
{
    public string PropertyA {get; set;}
}

public partial class ClassA
{
    public string PropertyB {get; set;}
}

コードの結果は次のようになります。

var instance = new ClassA();

instance.PropertyA = "Something";
instance.PropertyB = "Something else";

C# はこのパターンをサポートしていますか?

よろしくお願いします!

4

3 に答える 3

4

簡単な答え:いいえ。MSDN には次のように記載されています

すべての部分で、partial キーワードを使用する必要があります。最終的な型を形成するには、コンパイル時にすべてのパーツが利用可能でなければなりません。すべてのパーツは、パブリック、プライベートなど、同じアクセシビリティを備えている必要があります。

于 2012-06-12T05:59:40.240 に答える
2

いいえ。部分クラスのすべての部分にpartial修飾子を含める必要があります。C# 4 言語仕様のセクション 10.2 から:

部分型宣言の各部分には、部分修飾子を含める必要があります。他の部分と同じ名前を持ち、同じ名前空間または型宣言で宣言する必要があります。部分修飾子は、型宣言の追加部分が他の場所に存在する可能性があることを示しますが、そのような追加部分の存在は必須ではありません。部分修飾子を含めることは、単一の宣言を持つ型に対して有効です。

部分型のすべての部分は、コンパイル時に単一の型宣言にマージできるように、一緒にコンパイルする必要があります。部分型では、特に、既にコンパイルされた型を拡張することはできません。

(私のものを強調してください。)

于 2012-06-12T05:59:49.157 に答える
0

クラスに参加するすべてのファイルはpartial、 でクラスを定義する必要がありますpartial。さらに、それらは同じアセンブリに存在する必要があります。

ポリモーフィズムを使用して ClassA を拡張できます。拡張メソッドもありますが、その名の通りメソッドしか拡張できません。

これは派生クラスですが、 とはまったく同じではありませんpartial

public class ClassA
{

    public string PropertyA { get; set; }
}

public class ClassB : ClassA
{
    public string PropertyB { get; set; }
}
于 2012-06-12T05:59:50.847 に答える