I’d like to do the same in C#. Is there anyway of using properties in C# with parameters in the same way I’ve done with the parameter ‘Key’ in this VB.NET example?
Private Shared m_Dictionary As IDictionary(Of String, Object) = New Dictionary(Of String, Object)
Public Shared Property DictionaryElement(ByVal Key As String) As Object Get If m_Dictionary.ContainsKey(Key) Then Return m_Dictionary(Key) Else Return [String].Empty End If End Get Set(ByVal value As Object) If m_Dictionary.ContainsKey(Key) Then m_Dictionary(Key) = value Else m_Dictionary.Add(Key, value) End If End Set End Property
Thanks
No. You only can provide the default property in C# with an argument, to model indexed access (as in a dictionary):
Other properties can’t have arguments. Use a function instead. By the way, it’s recommented to do the same in VB so other .NET languages (C# …) can use your code.
By the way, your code is unnecessarily complicated. Four things:
Stringidentifier. Use the keyword directly.''?TryGetValue, it’s faster. You query the dictionary twice.