- PR -

New キーワードについて初歩的な質問

1
投稿者投稿内容
BBSハンドル
会議室デビュー日: 2008/08/12
投稿数: 7
投稿日時: 2008-08-12 14:02
.NET初心者です、お世話になります。
下記のようなエラーメッセージのプロシージャを作成してみたのですが、構文エラーとなってしまいます。
初歩的な質問ですが、どなたか教えて頂けませんでしょうか。
よろしくお願い致します。

Private Shared Sub WriteSystemErrorMessage(ByVal e As Exception)
Try
New Logger(String.Empty, "system.log", NetworkUtility.GetLoginUser, LogOutputMode.Normal).Write(SystemErrorManager.GetExceptionMessage(e))
Catch exception1 As Exception
ProjectData.SetProjectError(exception1)
Dim exception As Exception = exception1
MessageBox.Show(ChrW(12471) & ChrW(12473) & ChrW(12486) & ChrW(12512) & ChrW(12525) & ChrW(12464) & ChrW(12398) & ChrW(20986) & ChrW(21147) & ChrW(20013) & ChrW(12395) & ChrW(12456) & ChrW(12521) & ChrW(12540) & ChrW(12364) & ChrW(30330) & ChrW(29983) & ChrW(12375) & ChrW(12414) & ChrW(12375) & ChrW(12383) & ChrW(12290), ProcessUtility.GetApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Hand)
ProjectData.ClearProjectError
End Try
End Sub
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2008-08-12 14:53
VB.netはjava等と違ってコンストラクタの返したインスタンスのメンバに直接アクセスする構文を許可していません。
コード:
Dim log As New Logger(String.Empty, "system.log", NetworkUtility.GetLoginUser, LogOutputMode.Normal)

log.Write(SystemErrorManager.GetExceptionMessage(e))



のようにコンストラクタの呼び出しと
メンバへのアクセスを分けましょう


[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2008-08-12 14:53 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-08-12 15:04
VB では New キーワードでインスタンス生成したオブジェクトから直接メンバを呼び出せないです (メソッドの戻り値であれば問題ありません)。 ただしコンストラクタであっても左辺がある状態で、呼び出すメンバが値を返せるならば問題なく実行できます (値を返せないと式が値を返さないという、別の構文エラーになります)。

コード:

    ' これは OK
    Dim sb1 As System.Text.StringBuilder = Nothing
    sb1 = New System.Text.StringBuilder().Append("A").Append("B")

  ' これは無理
  '(New System.Text.StringBuilder()).Append("A")


確かこうだったハズ...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
BBSハンドル
会議室デビュー日: 2008/08/12
投稿数: 7
投稿日時: 2008-08-18 11:56
お礼が遅れてしまい大変申し訳ございません。
おかげさまでエラーを回避できました、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)