| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > распаковка кортежей в .NET4 |
| Автор: GoldFinch 12.5.2010, 13:09 | ||
| В .NET 4 ввели кортежи (System.Tuple) Я правильно понимаю, что нет способа распаковать кортеж, как например в С++
т.е. можно только извлекать из него данные по одному? |
| Автор: diadiavova 12.5.2010, 16:52 |
| Класс System.Tuple содержит статические методы для создания кортежей, а сами кортежи являются экземплярами типов System.Tuple<T1>, System.Tuple<T1, T2> и тд. А у них есть соответствующие свойства. |
| Автор: GoldFinch 13.5.2010, 08:18 | ||||
| diadiavova, свойства это не то, я хочу сразу извлекать данные из кортежа в переменные через свойства это
а я хочу что-то вроде
хотя в С# тут преимуществ мало =\ переменные должны быть заранее объявлены и инициализированы, надо явно указывать "ref" но в ряде случаев это все равно было бы удобнее, когда переменные уже где-то объявлены |
| Автор: diadiavova 13.5.2010, 08:25 |
| Вообще-то, на сколько я понимаю кортежи в дотнете появились для взаимодействия с кодом, написанным на F#. В самом C# вместо них лучше использовать анонимные типы. То, о чём ты пишешь в том или ином виде реализовать можно, только мне не вполне понятно зачем. Ну если очень надо, просто напиши метод, в котором первым параметром будет кортеж, а остальными - переменные и все дела, но только к чему всё это? |
| Автор: GoldFinch 13.5.2010, 14:15 |
| diadiavova, кортежи сами по себе удобны, когда надо из функции вернуть несколько значений жаль конечно что в C# они так криво сделаны может в .NET5 их пофиксят =) |
| Автор: GoldFinch 14.5.2010, 09:20 |
| diadiavova, ни у System.Tuple, ни у анонимных типов, нет средств для одновременного присвоения их содержимого нескольким переменным, как я хотел бы |
| Автор: diadiavova 14.5.2010, 09:24 |
| Тогда опиши ситуацию, зачем тебе это надо. Обычно если требуется, чтобы метод возвращал несколько значений, используют аут-параметры, если тебе нужен отдельный объект, то тут анонимные типы, но вот в какой ситуации то, что ты хочешь может оказаться более удобным, мне ,честно говоря, представить себе трудно. Может ты вообще не туда копаешь? |
| Автор: GoldFinch 15.5.2010, 11:23 |
| diadiavova, наверное действительно дело во мне, я хочу писать на C# так же как писал раньше на С++ и питоне. увидел знакомое слово tuple - и обрадовался) в самом деле, out параметры - то что надо для возврата нескольких значений |
| Автор: Exception 17.5.2010, 14:52 |
| Ну да, для человека с функциональным бэкграундом кортежи (сразу вспоминаю крестражи из Гарри Поттера, лол) — привычный способ возврата нескольких значений. С другой стороны, в C# для этого используются out-параметры, а tuples поддерживаются скорее ради F# и некоторых случаев, когда надо оперировать подобными элементами. В MSDN Magazine хорошо написано, почему класс System.Tuple такой, какой он есть: http://msdn.microsoft.com/en-us/magazine/dd942829.aspx |