無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

VB.NETをつつく29−部分型。コード合体♪

今回は部分型をつつくピヨ♪部分型はVSを使っている人ならばおなじみだと思うピヨ♪VB.NETでWindowsフォームアプリケーションを作ると次の様なコードが作成されるよね?

Public Class Form1

End Class


これだけだと何のことやら分からないピヨ。普通にしか見えないからね。じゃあ他のファイルがどこにあるのかというと、VSのソリューシュンエクスプローラで、左から2つ目にある「全てのファイルを表示」とチップで表示されるボタンをクリックしてから、ソリューシュンエクスプローラ上にあるForm1.csの+をクリックしてみよう。すると、Form1.Designer.vbというファイル名が見つかるピヨね。このファイルを覗いてみよう。


<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class Form1 Inherits System.Windows.Forms.Form 'フォームがコンポーネントの一覧をクリーンアップするために   ’dispose をオーバーライドします。 <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Windows フォーム デザイナで必要です。 Private components As System.ComponentModel.IContainer 'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。 'Windows フォーム デザイナを使用して変更できます。 'コード エディタを使って変更しないでください。 <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() components = New System.ComponentModel.Container() Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.Text = "Form1" End Sub End Class

察しがいい人はもう分かったと思うけど一応囀るピヨ。

Partial Class クラス名

と打つと部分型を宣言したことになるピヨ♪

見てのとおりこっち側はPartial Classって宣言されているピヨッ♪こんな具合に複数のファイルで一つの型を記述できるピヨ♪複雑な型を書いている時に便利かもね♪
これは一件単純な機能だけど、よく考えると幾つかの疑問が頭をよぎるピヨね。まず気になるのは1つのファイルで部分型を宣言した場合の事ピヨ。部分型というんだから、一つにしたら不味いのかな?疑問が出たら即実装!実際にやってみたピヨ♪


Partial Class PartialClass

    Shared Sub Main()

    End Sub

End Class


さてどうなるのかな♪エラーもしくは警告が表示されるかな♪わく♪わく♪・・・
結果は、残念ながら何にも起こらなかったピヨォ。何かが起こることをちょっと期待したんだけど、まぁ部分型と宣言しておいて、1ファイルで記述しても問題は無いピヨ。一旦コンパイルしたい時もあるからね。
といっても問題ないのは、直ぐ後で違うファイルへ型を書く場合のみピヨ。ありふれた名前の型を無闇に部分型にしてしまうと偶然に一致してしまう事があるから、原則的にはPartialは書かないほうがいいピヨ。ある程度大きなプロジェクトで、偶然に複数のファイルに同じ型名があった場合の挙動が予測できなくなるから駄目ピヨ。とはいえ、同じ型名がある事自体が設計ミスなんだけど、設計ミスはありふれた事だから無理して書かないほうが無難ピヨ。
ちなみに、構造体とインターフェイスにも使えるピヨ。クラスだけじゃなくて、部分インターフェイス、部分構造体に出来るって事だね♪なるピヨ、だから部分型なんだね♪他にもつつきたいことは沢山あるけど、長くなりすぎるので次回へ続く♪
別窓 | VB.NET | コメント:0 | トラックバック:0 | ∧top | under∨
<<VB.NETをつつく30−部分型1。合体後の属性はどうなる? | 無差別に技術をついばむ鳥 | ネタつつき11−出来ない子はどうすればいいのか?>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |