webForumDet fria alternativet

Oskrivna regler om properties?

.NET

7 svar · 656 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Frågan#1

Om jag vill ha en property med namnet FromName, som man både ska läsa och skriva till, så kan man ju skriva så här:

Public FromName As String

eller:

Private sFromName as String

Public Property Get FromName() As String
    FromName = sFromName
End Property
Public Property Let FromName(sValue As String)
    sFromName = sValue
End Property

Vad bör man använda? Finns det något som säger att det andra alternativet alltid är bäst..?

Medlem sedan jan. 2003270 inlägg
#2

Public använder du om den ska användas i fler än en sub/function.
Private om den bara ska användas i din nuvarande sub/function.

Medlem sedan maj 200010 687 inlägg
#3

Hehe, jo det vet jag... :e

Medlem sedan maj 200010 687 inlägg
#4

Eller snarare så att det är om det är i klaseen eller utanför...

Medlem sedan jan. 2003270 inlägg
#5

Ah, jo det var nog så jag menade. Var ett tag sedan jag höll på med VB. En sub eller function är ju Private eller Public :r
Men principen är densamma. Om du bara ska använda det i en class eller ett form så ska du använda Private. Ska du kunna använda det var som helst så använder du Public.

Nu ska det nog vara rätt ;)

Medlem sedan feb. 20002 300 inlägg
#6

Re: Oskrivna regler om properties?

Erik Juhlin skrev:

Om jag vill ha en property med namnet FromName, som man både ska läsa och skriva till, så kan man ju skriva så här:

Public FromName As String

eller:

Private sFromName as String

Public Property Get FromName() As String
    FromName = sFromName
End Property
Public Property Let FromName(sValue As String)
    sFromName = sValue
End Property

Vad bör man använda? Finns det något som säger att det andra alternativet alltid är bäst..?

Fördelen med properties är ju att du kan baka in valideringskod i dem och kasta exceptions om något går galet.

Medlem sedan maj 200010 687 inlägg
#7

Jo, men även om jag inte (nu) är instresserad av det. Bör man göra det som properties för att lätt kunna lägga in sånt i framtiden?

Medlem sedan feb. 200112 078 inlägg
#8

Du kan ju skapa en sk. Read-Only property om du använder Get men inte Set. Det får du ju inte med en vanlig Public. Vidare, du kan få snyggare namn på dina props i ditt interface om man har som för vana att använda prefix på sina properties. Jag sätter alltid "p_" eller "g_", och även datatypsprefix, framför alla mina props som är interna, vill jag sedan göra dem till en del av det publika gränssnittet så är det kanske lite snyggare att ta bort dessa prefix och döpa variabeln till något mänskligt.

Jag är mycket för Get och Set, det känns bättre om man vill bygga ut i framtiden, även om man bör betänka vilka variablar som är intressanta för sådant.

355 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)