Programmingアプリケーション開発者 (VB.NET)

Visual Basicにおける変数、プロパティ、メソッドのデフォルト値を実装する方法を説明してください。これらの使用がエラーや予期しない挙動を引き起こすのはどのような場合ですか?

Hintsage AIアシスタントで面接を突破

回答。

Visual Basicでは、デフォルト値は以下のように設定されます:

  • 変数 — 宣言時に割り当て(メソッド内のみ)。
  • プロパティ — 自動初期化またはコンストラクタを介して。
  • メソッドのパラメータOptionalキーワードと初期化子を使います。

パラメータの例:

Public Sub LogMessage(message As String, Optional level As String = "INFO") Console.WriteLine($"[{level}]: {message}") End Sub ' 第二引数なしの呼び出し - 'INFO'になります LogMessage("Test")

プロパティの自動初期化の例:

Public Property Status As String = "Undefined"

特徴:

  • Optionalパラメータは最後のパラメータにのみ指定できます;
  • デフォルト値はコンパイル時に既知でなければなりません;
  • デフォルト値として値型と文字列以外の型(例えば、クラス)を使用することはできません。

質問のトリック。

VB.NETでオブジェクト型のパラメータにデフォルト値を設定できますか?

回答: いいえ、Optionalパラメータには定数式のみが許可され、つまり値型と文字列型です。オブジェクトの場合、Nothingの値のみが使用でき、必要なオブジェクトはメソッド内で作成する必要があります:

Public Sub DoWork(Optional obj As SomeClass = Nothing) If obj Is Nothing Then obj = New SomeClass() End If ' ... End Sub

知識不足からくる実際のエラーの例。


物語

金融システム: Optional値付きの新しいパラメータを追加する際、開発者がリストの最後に指定しなかった。すべての呼び出しはコンパイルされましたが、パラメータがずれて、値が誤って渡される結果となった。


物語

報告システム: 自動初期化を使用するプロパティ(VB.NET 2010+)を適用したが、構文からの値のオーバーライドのロジックを考慮するのを忘れ、デフォルト値が常に正しく上書きされなかった。


物語

外部APIとの統合: Optionalパラメータのデフォルト値としてオブジェクトを設定しようとした際、コンパイル時エラーが発生し、リリースが遅れ、メソッドシグネチャの大規模なリファクタリングが必要になった。