![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
В .NET 4 ввели кортежи (System.Tuple)
Я правильно понимаю, что нет способа распаковать кортеж, как например в С++
т.е. можно только извлекать из него данные по одному? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Класс System.Tuple содержит статические методы для создания кортежей, а сами кортежи являются экземплярами типов System.Tuple<T1>, System.Tuple<T1, T2> и тд. А у них есть соответствующие свойства.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| GoldFinch |
|
||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
diadiavova, свойства это не то, я хочу сразу извлекать данные из кортежа в переменные
через свойства это
а я хочу что-то вроде
хотя в С# тут преимуществ мало =\ переменные должны быть заранее объявлены и инициализированы, надо явно указывать "ref" но в ряде случаев это все равно было бы удобнее, когда переменные уже где-то объявлены |
||||
|
|||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Вообще-то, на сколько я понимаю кортежи в дотнете появились для взаимодействия с кодом, написанным на F#. В самом C# вместо них лучше использовать анонимные типы. То, о чём ты пишешь в том или ином виде реализовать можно, только мне не вполне понятно зачем. Ну если очень надо, просто напиши метод, в котором первым параметром будет кортеж, а остальными - переменные и все дела, но только к чему всё это?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
diadiavova, кортежи сами по себе удобны, когда надо из функции вернуть несколько значений
жаль конечно что в C# они так криво сделаны может в .NET5 их пофиксят =) |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Не пофиксят, я уже написал, что в шарпе для этих же целей существуют анонимные типы, вводить в язык ещё одну сущность, аналогичную существующей, да ещё и менее удобную(в контексте языка) никто не будет. http://msdn.microsoft.com/ru-ru/library/bb397696(VS.90).aspx -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
diadiavova, ни у System.Tuple, ни у анонимных типов, нет средств для одновременного присвоения их содержимого нескольким переменным, как я хотел бы
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 18 Всего: 142 |
Тогда опиши ситуацию, зачем тебе это надо. Обычно если требуется, чтобы метод возвращал несколько значений, используют аут-параметры, если тебе нужен отдельный объект, то тут анонимные типы, но вот в какой ситуации то, что ты хочешь может оказаться более удобным, мне ,честно говоря, представить себе трудно. Может ты вообще не туда копаешь?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
diadiavova, наверное действительно дело во мне, я хочу писать на C# так же как писал раньше на С++ и питоне.
увидел знакомое слово tuple - и обрадовался) в самом деле, out параметры - то что надо для возврата нескольких значений |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 1 Всего: 186 |
Ну да, для человека с функциональным бэкграундом кортежи (сразу вспоминаю крестражи из Гарри Поттера, лол) — привычный способ возврата нескольких значений. С другой стороны, в C# для этого используются out-параметры, а tuples поддерживаются скорее ради F# и некоторых случаев, когда надо оперировать подобными элементами.
В MSDN Magazine хорошо написано, почему класс System.Tuple такой, какой он есть: http://msdn.microsoft.com/en-us/magazine/dd942829.aspx |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |