Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

違うフォルダー内のファクションを使いたい。

タグの編集...

投稿者 ケンケン   (社会人)   投稿日時 2021/12/1 16:56:36
AAAフォルダー内

  AAAフォルダーにCommonFunctions.VBが有ります。
  
  CommonFunctions.VB
   上記のVBの中に
   
    Shared Function GetMonthLastDay(inDateTime As DateTime) As Integer が存在します。
   
BBBフォルダー内

 SET001.VB にて
   GetMonthLastDayのファンクションを使用したのですが
   宣言されてませんのエラーが表示されます。
   
   ※AAAフォルダー内のGetMonthLastDayをどの様に宣言知れば宜しいですか?
   
   
ご教授お願い致します。   


投稿者 魔界の仮面弁士   (社会人)   投稿日時 2021/12/1 18:36:48
ソースコードがどこのフォルダーに置かれているかは、プログラムの動作とは無関係です。

プロジェクト内で管理されているのであれば、物理パスはどににあっても構いません。
気に掛けるべきは名前空間の方です。
(この点は自作のメソッドであれ .NET Framework 標準のメソッドであれ同じこと)

名前空間という概念については、初級講座[改訂版]の 第5回~第7回 あたりを参照してみてください。


>  CommonFunctions.VB
>   上記のVBの中に
>    Shared Function GetMonthLastDay(inDateTime As DateTime) As Integer が存在します。
.vb ファイルの直下に、Shared Function や Funcrtion を置くことはできません。
その前に、Class / Module / Strucutre / Interface などがありますよね? 大事なのはそっち。
(Module や Interface だと Shared Function は置けないので、おそらく Class があったはず…)

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2021/12/1 18:52:00
> Shared Function GetMonthLastDay(inDateTime As DateTime) As Integer

GetMonthLastDay という名前から想像するに、中身はこのような実装ですかね?

Return Date.DaysInMonth(inDateTime.Year, inDateTime.Month)




たとえば、下記のように実装されている場合、他の場所からは
Dim n As Integer = Foo.Example.GetMonthLastDay(Now)
などのように、名前空間やクラス名を伴って呼び出せます。

Namespace Foo
    Public Class Example
        Shared Function GetMonthLastDay(inDateTime As DateTime) As Integer



Namespace を付与していないなら、直接クラス名から指定すれば OK。
Dim n As Integer = Example.GetMonthLastDay(Now)

Public Class Example
    Shared Function GetMonthLastDay(inDateTime As DateTime) As Integer


投稿者 ケンケン   (社会人)   投稿日時 2021/12/2 09:58:01
色々と参考になります。
ありがとうございます。