Properties with Parameters (and Making Them the Default)
Most developers aren't aware that you can write properties that accept parameters, just like a method does. Of course, it isn't often that you need a property that accepts a parameter. One way I recognize that I could use a property rather than a method is when my method name begins with the word "Get." Here, for example, is a method that (I assume) returns the specified part of a name:
Public Class NameManager
Public Function GetNamePart(NamePosition As Integer) As String
'...code
End Function
If I rewrite the method as a property (and rename it), my class code looks like this:
Public Class NameManager
Public ReadOnly Property NamePart(NamePosition As Integer) As String
Get
'...code
End Get
End Property
A developer who wants to get the customer's middle name would write code like this:
Dim nm As New NameManager("Peter Hunter Vogel")
Dim middleName As String
middleName = nm.NamePart(2)
You can go one step further and make this property the default property for the class, in which case a developer doesn't even have to use the property name. Here's the relevant code in Visual Basic (which adds the modifier Default to the property's signature):
Public Class NameManager
Default Public ReadOnly Property NamePart(NamePosition As Integer) As String
Get
'...code
End Get
End Property
Here it is in C# (which renames the property to the keyword "this"):
public class NameManager
public string this(int NamePosition)
get {
'...code
}
Regardless of how the class is written, the code to retrieve the middle name now looks like this:
middleName = nm(2)
Posted by Peter Vogel on 10/29/2015