0

コードをコード ビハインドからクラスに移動していて、問題が発生しました。文字列 (html 請求書) を作成するメソッドがあります。メソッドでは、最終的な金額が作成されます。文字列を返す「CreateInvoice」メソッドを持つ Invoice というクラスを作成し、オブジェクトの finalCharge プロパティも設定したいと考えています。面倒な作業はすべて完了しましたが、クラスの設定は私が問題を抱えている部分です

Public Class Invoice
    Public finalCharge As Double
    Public invoiceString As String
    Public billingId As Integer
    Public clientID As Integer

Public Shared Function CreateInvoice(ByVal bill_id As Integer, ByVal client_id As Integer) As String
    ... 'create string invoice
    ... 'tally final charge
End Function


'On my code-behind page.
dim y as string
dim x as Invoice

y = x.CreateInvoice(1225,8855) <-- this line doesn't work.

整理するのを手伝ってくれてありがとう!

4

1 に答える 1

2

これはShared関数です。つまり、クラスのインスタンスを使用する必要がない (または使用したくない) ことを意味します。次のように呼び出す必要があります。

Invoice.CreateInvoice(1225, 8855)

Sharedそうは言っても、あなたも次のように述べているので、そもそもそうすべきかどうかは完全にはわかりません。

[I]... finalCharge プロパティを設定したい

関数はプロパティにSharedしかアクセスできないため(インスタンスがないため)、実際にはインスタンス関数にしたい場合があります。Shared

Public Class Invoice
    Public finalCharge As Double
    Public invoiceString As String
    Public billingId As Integer
    Public clientID As Integer

    Public Function CreateInvoice(ByVal bill_id As Integer, ByVal client_id As Integer) As String
        ... 'create string invoice
        Me.finalCharge = ... 'tally final charge
    End Function
End Class

その場合、次のように呼び出します。

Dim x as New Invoice()
Dim y as String = x.CreateInvoice(1225, 8855)
Dim finalCharge as Double = x.finalCharge
于 2012-05-18T20:58:22.250 に答える