2022年02月01日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 1509 count

partial: partialクラスとpartialメソッドは似ているが違う

Written By: 川俣 晶連絡先

この章のテーマ §

 partialクラス(partial型)とpartialメソッドについて学びます。これらは定義を分割する手段ですが、機能的には全く違う効能を持ちます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, クラスの基礎、メソッドの基礎

解説 §

 partialキーワードを付けたクラスなどの型は、定義を複数に分割できます。つまり、同じ名前のクラスの定義が複数あっても良く、それらは全て足し合わさされて1つの定義として扱われます。つまり、privateとして宣言されたメソッドは、サンプルソースのように、他の定義からでも呼び出せます。

 一方で、partialキーワードを付けたメソッドはpartialメソッドとなり、定義の分割とは違う効能を発揮します。名前、戻り値の型、引数の宣言だけを書いた部分と、実行する文まで記述した完全な形の実装の2つを分けて記述できますが、実装は省略できます。実装がないとしても呼び出しを行うコードは記述可能で実行できます。ただ単に何も呼び出さないだけです。これはツールで自動生成したコードに、必要な実装だけ主導で追加する場合に便利な機能です。

罠の数々 §

  • partialクラス(partial型)は単に定義を分割可能にしているだけで、最終的に全て1つの型になる。同じ名前の別の型を宣言しているわけではない
  • partualクラスは割と古い機能で、WinFormアプリを開発するとすぐにでも目にする可能性がある
  • 一方で、partialメソッドはかなり新しい機能なので、利用例はなかなか見かけない。しかし、今後は活用されていくかもしれない。頭の片隅に入れておこう

参考リンク §

partial 型 (C# リファレンス)

partial メソッド (C# リファレンス)

部分クラスと部分メソッド (C# プログラミング ガイド)

サンプルソース: kw_partial §

var x = new A();

x.PublicSub();

partial class A

{

    private void privateSub()

    {

        Console.WriteLine("A.privateSub");

    }

    partial void PartialMethodA();

    partial void PartialMethodB();

}

partial class A

{

    public void PublicSub()

    {

        Console.WriteLine("A.PublicSub");

        privateSub();

        PartialMethodA();

        PartialMethodB();

    }

    partial void PartialMethodA()

    {

        Console.WriteLine("A.PartialMethodA");

    }

}

実行結果 §

A.PublicSub

A.privateSub

A.PartialMethodA

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

var x = new A();

Console.WriteLine(x.PartialMethodA());

partial class A

{

    public partial int PartialMethodA();

}

  1. 0
  2. null
  3. default
  4. コンパイルエラー
  5. 実行時例外

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2022年
02月
02日
baseキーワード: 基底クラスのメンバーにアクセスせよ!
3days 0 count
total 1006 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2022年
01月
31日
nameof式: あなたの名前そのものが欲しいのです
3days 0 count
total 984 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20220201094848
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.