Ваш пример javascript не соответствует словарю, а также:
var myDictionary = [];
myDictionary["namevalue1"] = "value1";
myDictionary["namevalue2"] = "value2";
Теперь мы можем делать все с моим кодом, что мы можем делать с вашим, но на самом деле это не то же самое, что моделирование.Твоя определяет свойства, а моя ассоциирует значения с ключами.Вы семантически создали структурированный объект, я создал более плоский объект, хотя у меня есть немного больше гибкости в случае, когда я не знаю, какую строку я буду использовать в качестве ключа (не намного больше в js, так как jsГибкость времени выполнения означает, что не так сложно динамически добавлять новые свойства, если ключ является допустимой меткой.
Так же, как в Javascript, в C #:
Если у вас небольшой набор свойств,известны во время компиляции, тогда класс с такими свойствами наиболее точно моделирует ваше намерение.
Если у вас большой набор свойств или вы не знаете их во время компиляции, то словарь будет наиболее точно моделировать вашНамерение.
Тот факт, что они, вероятно, будут наиболее эффективными в обоих случаях, является просто бонусом, сначала смоделируйте свои намерения настолько хорошо, насколько позволяет язык, подумайте об уходе от того, что происходит позже, если это абсолютно необходимо.
На самом деле ничем не отличается от JS, за исключением того, что он немного более строг в отношении того, что вы делаете в данный момент (мыможно обойти эту строгость, если мы действительно нуждаемся, но вы?).