No.1ベストアンサー
- 回答日時:
警告が出る理由は、「分かりづらくなる」 です。
クラスの共有メンバを呼び出す場合は、そのクラスから作成したインスタンスの変数名を通じて行うのではなく、クラス名を通じて行ったほうが良いということです。
Dim myDateTime1 As DateTime
myDateTime1 = DateTime.Now()
日付時刻を格納するために DateTime クラスのインスタンス変数 myDateTime1 を作成し、現在の日時を入れたいと思います。
現在の日時は DateTime クラスの共有メンバである Now 関数で取得できるので、DateTime.Now() の結果を myDateTime1 変数に入れています。
このケース DateTime.Now() は DateTime というクラス名を通じて DateTime クラスの共有メンバである Now 関数にアクセスしています。
(実際には Now は関数というよりは読み取り専用のプロパティーですが、値を返すという意味で関数とします)
Dim myDateTime2 As DateTime
myDateTime2 = myDateTime1.Now()
DateTime 型のインスタンス変数をもう一つ作ります。
この myDateTime2 変数にも現在の日時を入れたいと思います。
このケースでは先に作成した myDateTime1 変数を通じて Now() 関数にアクセスしています。
このコードでは、Now 関数がインスタンスごとの違いの影響を受けてしまうように読めてしまいますが、DateTime1 の Now 関数も DateTime2 の Now 関数も機能はまったく同じ。なぜならインスタンスに関係なく、DateTime クラスが持つ共有メンバだからです。
なので myDateTime1.Now() とか myDateTime2.Now() とか書くのではなく、DateTime.Now() というようにクラス名を通じて書くべきである。
という警告です。
>警告が出る理由は、「分かりづらくなる」 です。
>このコードでは、Now 関数がインスタンスごとの違いの影響を受けてしまうように読めてしまいますが、DateTime1 の Now 関数も DateTime2 の Now 関数も機能はまったく同じ。なぜならインスタンスに関係なく、DateTime クラスが持つ共有メンバだからです。
なるほど。
詳しい解説をありがとうございました。
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- C言語・C++・C# 課題でどうしてもわからない問題があったので教えてほしいです、、 メンバ関数add_accept_st 3 2022/06/04 12:23
- JavaScript オブジェクト配列の各メンバを任意の式で評価して、その評価値が最大のオブジェクトを返す関数はありますか 2 2023/05/20 15:02
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- グループウェア Macでオープンオフィスが開きません 1 2023/01/14 14:22
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Access(アクセス) アクセス IDが空白の時、メッセージボックスがでるようにするには 1 2022/08/04 11:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
フォームのCheck boxとOLEObjec...
-
String a = "a"; と String b =...
-
「インスタンス」の意味をわか...
-
SQLを連続発行する時の正しい(?...
-
カンマ区切りの数値文字列を数...
-
スレッドセーフについて
-
C#のメモリ解放についてご教授...
-
外部ライブラリの動的参照によ...
-
複数の変数を宣言する時、同時...
-
生成したインスタンスを削除す...
-
文字列を日付に変換でParseExce...
-
private static という変数の修飾
-
C# のインスタンスの破棄
-
C# インスタンスの破棄
-
エクセルVBAで、条件に一致する...
-
「エンクロージング型」と「外...
-
EXCEL VBAにて動的にCheckBOXを...
-
同じクラスにならない確率を教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報