Есть ли хорошая ссылка, которая табулирует, какие типы F # являются типами значений и которые являются ссылочными типами? Кроме того, есть ли хороший способ запросить тип, чтобы определить, что это такое? Да, я знаю, что вещи, которые являются классами, являются ссылочными типами, а вещи, которые являются структурами, являются типами значений. В то же время это различие не всегда интуитивно для меня с типами F #. Например, tuple types are reference types. Очевидно, что это и типы записей.Ссылка, которая табулирует, какие типы F # являются типами значений и которые являются ссылочными типами.
1
A
ответ
4
Вы всегда можете проверить, является ли что-то тип значения с помощью F # Interactive:
typeof<int * int>.IsValueType
Как уже упоминалось, кортежи являются ссылочными типами и поэтому это возвращает false
.
Я согласен, что разница не всегда ясна. В общем, большинство типов, с которыми вы работаете в F #, являются ссылочными типами (и всеми типами F #, которые вы определяете, за исключением struct types).
- Примитивные типы (числовые и булевы) типы значений
- Но
string
является ссылочным типом - Там будут несколько типов структуры, определенные в .NET как
DateTime
иTimeSpan
, а такжеKeyValuePair
(иногда это путают, так как это очень похоже на кортеж). - F # кортежи, записи, дискриминационные объединения, списки, массивы - все ссылочные типы
- Типы объектов F # также являются ссылочными типами, если они не обозначены как
Struct
.
Смежные вопросы
- 1. Поля типов значений являются ссылочными типами?
- 2. Как вы можете продемонстрировать, что типы массивов являются ссылочными типами?
- 3. Неявное преобразование типичных типов, параметризованных ссылочными типами, и типами значений
- 4. Каковы различия между типами значений и ссылочными типами в C#?
- 5. Являются ли типы значений C# или ссылочные типы?
- 6. разница между ссылочными типами и ссылок
- 7. Строки против классов, когда оба являются ссылочными типами
- 8. Являются ли перечисления Java примитивными или ссылочными типами?
- 9. Неявное преобразование между ссылочными типами
- 10. Как создать построитель в C# для объекта, который имеет свойства, которые являются ссылочными типами?
- 11. , которые являются отличительными типами Exception occucerd при выполнении операции LINQ?
- 12. XNA Class Design with Structs as Свойства и проблемы, поскольку они являются типами значений, а не ссылочными типами
- 13. Наконец и с # ссылочными типами
- 14. Перегрузки с типами аргументов, которые являются базой и наследуется класс
- 15. Вложенные типы, которые являются общедоступными
- 16. , пытаясь понять это: переменные bool являются типами значений в C#
- 17. Являются ли литералы типами во время компиляции?
- 18. Предотвращать появление новых аргументов, которые являются совокупными типами?
- 19. Являются ли данные более плотно упакованными массивом типов значений или ссылочными типами?
- 20. Бокс и неявные преобразования с ссылочными типами
- 21. Являются примитивными типами данных потокобезопасными в Java
- 22. Являются ли примитивные типы только типами, не унаследованными от java.lang.Object?
- 23. Неявные преобразования для членов, которые являются типы
- 24. Вложенные списки в списке, которые являются разными типами
- 25. Если массивы являются типами значений и, следовательно, скопированы, то как они не являются потокобезопасными?
- 26. Какие операции над типами перечислений являются законными в C++?
- 27. В C#, использование типов значений по сравнению с ссылочными типами
- 28. Расширение Преобразование между ссылочными типами
- 29. Являются ли указатели примитивными типами в C++?
- 30. Общая очередь с ссылочными типами данных