とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

Visual Basic 2008 の新機能 - 部分メソッド -

Visual Basic 2008では 部分メソッド という機能が新しく追加されましたそうです。どんなんか~な~。

MSDN : 部分メソッド

む?メソッドの一部分を分けるとかってのではないのですか・・・。なんかちょっと分かりにくい名前ですね。ふむふむ・・・メソッドの宣言と実装を分離できるよ~ってことですか。

簡単に書くとこんな感じですね。

Public Class Class1
    Partial Private Sub Hoge()     End Sub
    Private Sub Hoge()
        Console.WriteLine("パーシャル○ント")
    End Sub
End Class

上のHogeメソッドが部分メソッドの宣言、下のHogeメソッドが部分メソッドの実装になります。宣言側ではメソッドをPartialキーワードを使用し、中身の実装を書きません。実装側では通常のメソッドと同じですね。

で、この部分メソッドについてちらほらと書くと、まず部分メソッドはSubプロシージャであること、またPrivateであることが必要みたいです。

んでもって、部分メソッドの実装がない場合は、メソッドへの呼び出しはコンパイラによって削除されるそうです。ほほ~、ちゃんと考えてくれるわけですね。

あ、そういえば、以前読んだ記事でこんなのがありました。

The Visual Basic Team : Partial Methods

書かれているのは以下のような使い方。

Public Class PrettyConditonalCompilationCode
    ' 部分メソッドを宣言。     Partial Private Sub LogMessage(ByVal s As String)     End Sub
    ' 条件付コンパイル  #If DEBUG Then
    Private Sub LogMessage(ByVal s As String)
        Console.WriteLine(s)
    End Sub
#End If
    Sub DoStuff()
        DoFirstThing()         LogMessage("Did first thing")
        DoSecondThing()         LogMessage("Did second thing")
        DoThirdThing()         LogMessage("Did third thing")
    End Sub
End Class

メソッドの実装を条件付コンパイル内に置くことで(今回はDEBUG定数によって)実装の有無を変更できるんですね。なるほどなるほど♪




これ以外にも使用するとうまいシナリオはあるのかもしれません。が、Partial クラス同様、単一ファイル内外に関わらず実装が点在してしまう可能性はありますね。

投稿日時 : 2008年2月4日 19:55

Feedback

# re: Visual Basic 2008 の新機能 - 部分メソッド - 2008/02/04 20:11 じゃんぬねっと

Conditional でおk

# re: Visual Basic 2008 の新機能 - 部分メソッド - 2008/02/04 22:04 HIRO

部分メソッドですか... はじめて知りました。

条件付きコンパイルで使う方法は納得です。
それ以外にどんな使用方法があるんでしょうね?

自分は思いつきません(もっと頭を柔軟にしなくては..)

にしても、とりこびとさん、勉強してますね。
また、新機能見つけたら教えてくださいね。

# re: Visual Basic 2008 の新機能 - 部分メソッド - 2008/02/05 0:32 かるあ

パーシャルメソッドはLINQ to SQL のエンティティクラスを眺めるととってもいいサンプルになりますよ。

Public Function 更新
更新前()
更新()
更新後()
End Function

みたいな関数があって、更新前と更新後をパーシャルにしとくと、override する感じで使える。
override と違って実装しなければコンパイル時に消えてくれるしね。

# re: Visual Basic 2008 の新機能 - 部分メソッド - 2008/02/05 10:26 ghost_shell

クラス宣言、メソッド宣言を複数箇所に作れるという点ではpartial classと同じだけど、全く別のものに感じます。(主観)

partial classes -> +
partial methods -> Max

みたいな。

それにしても「部分メソッド」って意味不明ですよね。

#直訳用語は英語に変換して考えるのでわからなくはないですが。

# re: Visual Basic 2008 の新機能 - 部分メソッド - 2008/02/05 14:25 かるあ

> 全く別のものに感じます。
同じく、これはちょっと異なる動きをする仮想関数と考えていい気がします。

# re: Visual Basic 2008 の新機能 - 部分メソッド - 2008/02/05 15:08 とりこびと

コメントありがとうございます。

>じゃんぬねっとさん

>Conditional でおk

ま、方法のひとつということで。・・・だめですか?w

>>HIROさん

>部分メソッドですか... はじめて知りました。

なぜか
http://msdn2.microsoft.com/ja-jp/library/y17w47af.aspx
には載っていないです。
あまり使う機能ってわけではないのでしょうか。

>それ以外にどんな使用方法があるんでしょうね?

以下のかるあさんのが・・・(他力本願w

>とりこびとさん、勉強してますね。

・・・暇なので(ぉ

>また、新機能見つけたら教えてくださいね。

出来るだけ早くがんばりますw


>>かるあさん

>パーシャルメソッドはLINQ to SQL のエンティティクラスを眺めるととってもいいサンプルになりますよ。

なるほど、そっか、こういう使い方してるのですね。ほうほう・・・この使い方は活かせそうです。

>override と違って実装しなければコンパイル時に消えてくれるしね。

このコンパイル時に消えてくれるってのがステキすぎます♪

>>ghost_shellさん

>クラス宣言、メソッド宣言を複数箇所に作れるという点ではpartial classと同じだけど、全く別のものに感じます。(主観)

確かに機能的にはすこし雰囲気が違いますね。本文は'複数箇所に作れるという点ではpartial classと同じ'という意味で書きました。

>それにしても「部分メソッド」って意味不明ですよね。

ですよねw

タイトル
名前
Url
コメント