Я хочу использовать некоторые функции python, такие как Tuples and Sets в C#. должен ли я их реализовать? или уже реализованы? может ли кто-нибудь знать библиотеку динамических структур данных для языков .net?Как имитировать кортежи и наборы в C#?
ответ
Для наборов, HashSets (функция .NET 3.5) хорошо справляется.
Частичный ответ для кортежей:
- .NET 4.0 обеспечивает [некоторые] поддержку tuples.
- В более ранних версиях C# можно использовать анонимный тип (я думаю, что введен в .Net 2.0, 3.0, конечно, со всеми материалами LINQ).
Ни один из этих подходов не является таким же удобным, как с Python; основной недостаток связан с тем, что C# статически типизирован. Однако класс C# 4.0 Tuple имеет статические методы, подобные фабрике, которые упрощают создание кортежей (до 8 кортежей, т. Е. Кортежи с 8 членами). Например, может быть
var customer1 = Tuple.Create("John", "Smith", 14, 5.33, "202-123-444");
Использование анонимного типа может быть выполнено следующим образом. Основной недостаток этого подхода состоит в том, что нужно явно назвать элементы «кортеж» (хотя это именование может быть неявно «проецируется», если значения, используемые для инициализации «проецируется» от другого объекта.
customer1 = new Customer { Name = "John", Surname = "Smith", NumberOfVisits = 14, CurrentBalance = 5.33, PhoneNr = "202-123-444" };
@mjv: C# - это более * статически * типизированный язык. Оба C# и Python строго типизированы. – quamrana
@quamrana: совершенно верно. Это то, что я имел в виду; теперь отредактирован соответствующим образом. – mjv
анонимные типы были добавлены в C# 3.0/.NET 3.5. .NET 3.0 был только BCL без изменений на языках –
Если вы работаете с .NET Framework ранее уже упоминалось, Wintellect Power Collections может оказаться какой-то интерес - это имеет Pair
и Triple
для 2- и 3-кортежей, а также коллекции, такие как Set
, Bag
и Ordered
ароматы обоих.
Конечно, нет ничего, что помешало бы вам реализовать 4.0's Tuple
самостоятельно.
(Кстати, нет ничего особенного «динамический» о структурах данных, как они и сами по себе)
- 1. наборы и xmemory в C++
- 2. C# 7: кортежи и генераторы
- 3. Пересечение наборы в C
- 4. списки и кортежи
- 5. Перевод Python на C++: списки и кортежи
- 6. Словари и кортежи
- 7. Как имитировать друзей C++ в C# и VB.NET?
- 8. Как перебрать все C++ наборы в Cython?
- 9. Python кортежи и списки
- 10. Как эффективно сравнивать наборы в C++?
- 11. Большие наборы данных представление в C/C++
- 12. Merge слитной наборы в C++
- 13. C++ Qt WordCount и большие наборы данных
- 14. Сортированные наборы и компараторы
- 15. C# - Как имитировать CD DRIVE?
- 16. Как определить кортежи
- 17. Как извлечь список и кортежи в строки?
- 18. Рекурсия и кортежи в Python
- 19. Кортежи и вложенные списки
- 20. C++ Как печатать и (получать) кортежи векторов (на карте)?
- 21. Как имитировать поддельный keypress в C++
- 22. Имитировать пространство памяти в C#
- 23. Как имитировать пользовательский ввод в объективе-c?
- 24. Имитировать X11 KeyPress в C#
- 25. Как имитировать удерживание кнопки клавиатуры в C++
- 26. Как имитировать исключения в C с goto?
- 27. Как имитировать JavaScript в клиентских приложениях C#
- 28. Как имитировать C# char.IsLetter в VB6
- 29. Рекурсия и кортежи Python
- 30. Как имитировать внутреннее исключение в C++
«... что так же, как кортежей», хотя и только 2-кортеж. – Thomas
@ Томас Да, я хотел указать 2-кортеж. Отредактировано и исправлено. Благодарю. –
keyvaluepair никогда не является кортежем. PLS редактировать его .. – nawfal