Свойство Visual Basic по умолчанию против свойства C # - PullRequest
4 голосов
/ 14 июня 2011

Я конвертирую код Visual Basic.Net в C # в моем проекте. Но у меня есть некоторые сомнения относительно того, как преобразовать свойство Visual Basic по умолчанию в C #. Первый вариант, который приходит ко мне - это индексаторы. Давайте представим следующий код в Visual Basic

Public Class MyClass
Dim MyHash as Hashtable

Public sub New()
    MyHash = New Hashtable()
    MyHash.Add("e1",1)
    MyHash.Add("e2",2)
    MyHash.Add("e3",3)
End Sub

Defaul Propery MyDefProp(ByVal key as string) as Object
  Get
    Return MyHash(key)
  End Get

  Set(ByVal ObjectToStore As Object)
    MyHash(key) = ObjectToStore
  End Set
End Property

Преобразовал это в C #:

public class MyClass
{
    private Hashtable MyHash;

    public MyClass()
    {
        MyHash = new Hashtable();
        MyHash.Add("A1",1);
        MyHash.Add("A2",2);
        MyHash.Add("A3",3);
    }

    public object this[string key]
    {
        get
        {
            return MyHash[key]; 
        }

        set
        {
            MyHash[key] = value;
        }
    }     
}

Я прав в этом?

Ответы [ 2 ]

5 голосов
/ 14 июня 2011

Вы правы.

Единственное отличие состоит в том, что версия VB.Net также создает именованное индексированное свойство;C # не поддерживает именованные индексированные свойства.

1 голос
/ 14 июня 2011

Хотя C # поддерживает синтаксис свойств по умолчанию, ваш индексатор удовлетворит эту потребность.

...