C#

C#でのアクセシビリティ

C#にはアクセシビリティというものがあり
private
internal
publicなどがあります。
そのほかには
protected
protected internalがあります。

 

 

publicであれば同一アセンブリと
そのアセンブリを参照しているアセンブリから参照できます
(要するにすべて)

privateはそのクラスのみ
internalは同一アセンブリのみ
protectedは同一クラスと派生クラスからのみ参照可能
protected internalはprotectedとinternalの両方の効果があります。
プログラミングに慣れていない方は
一見publicを使えばどこからでも参照できて
全部これでもいいように思います。

しかし全くそういう事はありません。

このアクセシビリティをうまく使わないと
とても分かりにくい,改造しにくい,
ダメダメなプログラムが出来上がります。

そういう私も昔はそんなダメダメな
プログラムを書いていました。

では,なぜだめなのか,一緒に考えていきましょう。

例えばWindowsフォーム画面を作って
そこにボタンを一つ置いたとします。

C#のデザイン画面を見てみましょう。

こんな感じでボタンが宣言されています。
これがもし

だったらどうですか?
違いはボタンのアクセシビリティだけです。
publicに変更しました。

この瞬間からこのボタンがあるプロジェクト内とこのプロジェクトを参照する
すべてのコードでこのボタンの値を変更できるようになりました。

これってすごく怖いですよね。

このプログラムをリリースした後にもし
このボタンに対して何か修正を加えるたびに
どこに影響するかを調べる必要がありますが,
どこからでも値を変更できる時点で
ものすごい量のコードをチェックしないと
いけなくなります。

要するにアクセシビリティというのは非常に大切で
publicにすればどこからでも見られて便利な気もしますが
とても見通しの悪いプログラムになってしまいます。

アクセシビリティはできるだけ
外から見えないほうがいいです。
とはいえ,クラスなどはprivateのクラスでは
誰も使えないクラスになってしまい意味がありません。
C#でもクラスを作成したらデフォルトはinternalになっています
(アクセス修飾子を省略するとC#では変数はprivate,
クラスはinternalになります)
なので,魅せる必要のある最小のアクセシビリティにしましょう。
その上で,必要になった時にpublicに昇格させるという
設計がよいかと思います。

簡単ですがアクセシビリティに関しては以上です。
最後までお読みいただきありがとうございました。

トップページへ戻る

C#とSQLServerを繋いでデータを操作する4つの方法

#01_はじめに
#02_VisualStudio2022のインストール
#03_SQLServerのインストール
#04_データベースとテーブルの作成
#05_プロジェクトの作成
#06_接続先文字列の作成
#07_データテーブルでのデータの取得
#08_Sqlアクセスクラスの作成
#09_SqlDataReaderでのデータ取得
#10_SqlDataReaderの結果をカスタムクラスに入れる方法
#11_SqlCommandでInsert文を発行する方法
#12_SqlCommandでUpdate文を発行する方法
#13_Update対象がなかったらInsertする方法
#14_SqlCommandでDelete文を発行する方法
#15_Dapperでデータを取得する方法
#16_DapperでInsert文を発行する方法
#17_EntityFrameworkをインストールしてDbContextを作成する方法
#18_EntityFrameworkでデータを取得する方法
#19_EntityFrameworkでInsert文を発行する方法
#20_EntityFrameworkでUpdate文を発行する方法
#21_EntityFrameworkでDelete文を発行する方法
#22_Helperクラスを作ってSqlCommand操作を共通化する方法
#23_パフォーマンスチェックの方法
#24_4つのデータのとり方のパフォーマンスチェック
#25_4つの結果を踏まえて講評
#26_さい

C#を正しい3層構造で造れてますか?

非売品コースを受け取る

下記URLは、ベネッセが提供する教育用プラットフォームにて
私が公開しているプログラミング学習コースです。
無料コースもあるので、よかったらご覧になってみてください。
【無料動画】「C#を勉強する順番」