C#コーディングルール PR

C#コーディングルール_#23_コンストラクタとデストラクタを作成

記事内に商品プロモーションを含む場合があります

これではここからは,色々クラスを作成しながら,スタイルコップアナライザーのルールの確認をしていきたいと思います。

Objectsフォルダーの作成

WinFormプロジェクトを右クリックして,「追加」「新しいフォルダー」の順に選択し,フォルダーの「Objects」に変更します。

ProductEntityクラスの作成

作成した「Objects」フォルダーを右クリックし,「追加」「クラス」の順に選択し,「ProductEntity」クラスを作成します。ここでは例としてProductEntityとしていますが,名前は,なんでも構いません。今回は商品マスターの行データを格納するクラスの想定でProductEntityとしています。

警告の確認

作成したProductEntityはスタイルコップアナライザーの警告を示す波線が出ており,エラー一覧にも2つの警告が出ています。SA1400は「アクセス修飾子なし」,SA1600は「XMLコメントなし」の警告です。この2つは,お決まりの警告なので,クラスを作ったら,まずクラスに対するXMLコメントを書くことと,クラスのアクセス修飾子をどのようにするべきかを考えて,まずそれらを記述しましょう。

警告の対応

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Anderson.MX99.WinForm.Objects
{
    ///
    /// 商品エンティティ
    /// 
    internal sealed class ProductEntity
    {
    }
}

クラスの一行上の行でスラッシュを3つ打ち込むと,自動でXMLコメントの雛形が生成されます。自動生成されたら,コメント欄に「商品エンティティ」とコメントを書きます。続いてクラスのアクセス修飾子をinternalとします。もちろんinternalかpublicかは,用途に合わせて設定してください。sealedを付けているのは,このクラスが継承されることを想定していない為,sealedとしています。スタイルコップアナライザーの警告とは関係ありませんが,基本的にクラスはsealedで作成し,どうしても継承される必要のあるクラスだけをsealedなしとします。sealedで作成したクラスでも,後でどうしても継承する必要がでた場合は,その時点でsealedキーワードを削除して対応するというやり方がいいです。このようにすると,いったん警告が無くなります。

コンストラクタの作成

続いてコンストラクタの作成を行います。普通にタイピングしても構いませんが,「ct」と打ち込んで,Tabキーを2回押すと,自動でコンストラクタが生成されます。

コンストラクタの警告

この状態でもまた警告が表示されます。SA1600は例のごとくXMLコメントです。スラッシュ3つを打ち込んで,XMLコメントの雛形を自動で生成し,「コンストラクタ」を記述します。

SA1505とSA1508

SA1505は,中カッコの{の右側に不要な改行があることを示しています。SA1508は,中カッコ}の左側に不要な改行があることを示しています。

現在コンストラクタの{と}の間には改行が1行あり,それが不要な改行の為,この二つの警告が出ています。なので,この不要な1行を削除すると,2つの警告が同時に消えます。

次のように,コンストラクタに1行記述し,その次の行に,不要な改行を入れると,SA1500は表示されず,SA1508だけが表示されます。

どちらにしても,この2つの警告がある場合は,不要な改行があるということなので,不要な改行を消すようにしましょう。

デストラクタ

続いてデストラクタを記述します。デストラクタはチルダ「~」に続けてクラス名を書きますが,チルダ「~」を書いてからTABキーを押すことで,自動で生成されます。

警告はコンストラクタを作った時と同じ警告がでるので,XMLコメントを記述して,不要な改行コードを削除します。

SA1643

ここまで記述すると,新規の警告が表示されます。SA1643です。

XMLコメントが適切ではないといわれていますが,これは英語圏特有の文化で,日本語にはあっていないので,SA1643は非表示にしておきましょう。

以上でコンストラクタと,デストラクタ作成時の対応となります。

C#コーディングルール
Udemyで販売しているC#のコースを 1つプレゼントします!