クラスプロパティの内部からの利用

タグの編集
投稿者 miz  (社会人) 投稿日時 2023/11/6 16:48:12
よろしくお願いします。
以下のようにクラスを作り、Propertyを内部から利用するのは問題ないでしょうか
Public Propertyとして定義した_Syouhin_CdをNewで使用しています。
実際はNewだけでなく別のメソッド等でも使います。
Property は外部からアクセスする為に作ると教本にあったので
内部から使えるとは思っていなかったのですがエラーが出ず意外でした
単なる無知なら良いのですがお願い致します。

Public Class testClass1
    Private P_Syouhin_CD As String = ""

    Public Property _Syouhin_Cd() As String
        Get
            Return P_Syouhin_CD
        End Get
        Set(ByVal value As String)
            P_Syouhin_CD = Str_To_Cd(value, 13)
        End Set
    End Property

    Private Function Str_To_Cd(ByVal In_Str As String, ByVal Ketasuu As Integer) As String
        Dim W_Cd As Long = 0
        If In_Str <> "" Then
            W_Cd = Long.Parse(In_Str)
        End If
        Dim Rtn_Str As String = W_Cd.ToString(New String("0", Ketasuu))

        Return Rtn_Str
    End Function

    Public Sub New(ByVal Syouhin_CD As String)
        _Syouhin_Cd = Syouhin_CD
    End Sub
End Class
投稿者 るきお  (社会人) 投稿日時 2023/11/6 19:42:34
プロパティをクラスの内部から利用することに問題はありません。
クラスの内部からしか利用しないのであれば、Public Propertyではなく、Private Propertyのように宣言しておくのが間違いがなくてよいです。
外からも利用する可能性があるのであればPublic Propertyでも問題ありません。
状況次第ではProtected Property や Friend Property もありえます。

ところで、数字の値を 0 埋めして13桁にするには次のような方法もあります。
3つのやり方を紹介します。下記の reuslt1, result2, result3 のどれもが "0000000000123" になります。

'Integerの場合 
Dim intValue As Integer = 123

Dim result1 As String = intValue.ToString("D13")
Dim result2 As String = $"{intValue:D13}"

'Stringの場合 
Dim strValue As String = "123"
Dim result3 As String = strValue.PadLeft(13, "0")


後余談ですが、ByVal は最近は省略するので、ByValが付いているとなんだか古いプログラム見えます。
投稿者 クラスプロパティの内部からの利用  (社会人) 投稿日時 2023/11/7 08:54:04
返答ありがとうございます。
また色々教えて頂きありがとうございます。
VB2から使っていたのでByValの省略は驚きでしたが時代の流れなんですね
1人で作っているのでこのような話は大変助かります
ありがとうございました。