powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ref и out параметры
120 сообщений из 120, показаны все 5 страниц
ref и out параметры
    #39813671
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

Кто что думает по этому поводу?
...
Рейтинг: 0 / 0
ref и out параметры
    #39813674
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

Кто что думает по этому поводу?
бред, так ему и передай :)
он видимо не пользуется TryGetValue или TryParse, это же low level!
...
Рейтинг: 0 / 0
ref и out параметры
    #39813687
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще говорит, сложно читать и мешает композиции. Насчет первого это его личная проблема, мне читается прекрасно, а насчет композиции мне непонятно, о чем речь.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813696
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Пример его варианта дайте.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813715
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело не в лоулевеле По сути метод с out/ref это метод с side effect, что не особо хорошо. Единственное, наверное, разумное применение, что я им вижу - это как раз упомянутый TryDoSomething(out blaBalBla). И то, можно заметить, что большинство таких стандартных методов всегда ходят парами - один с возможным ексепшеном, другой с "TryXXX".
...
Рейтинг: 0 / 0
ref и out параметры
    #39813730
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет композиции тоже бред, как выяснилось.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813732
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Antonariy,
Пример его варианта дайте.если нужно вернуть несколько значений, его вариант - наплодить классов.
кортежи пока не используем, потому что сидим на 4м фреймворке.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813733
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatПо сути метод с out/ref это метод с side effect, что не особо хорошо.Слишком абстрактно. Какие именно эффекты?
...
Рейтинг: 0 / 0
ref и out параметры
    #39813736
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Вон, в java вообще нельзя два выходных параметра.
Но писать то неудобно с непривычки))
...
Рейтинг: 0 / 0
ref и out параметры
    #39813737
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyPetro123Antonariy,
Пример его варианта дайте.если нужно вернуть несколько значений, его вариант - наплодить классов.
кортежи пока не используем, потому что сидим на 4м фреймворке.значит он из java
...
Рейтинг: 0 / 0
ref и out параметры
    #39813742
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ref и out параметры
    #39813747
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyесли нужно вернуть несколько значений, его вариант - наплодить классов.
кортежи пока не используем, потому что сидим на 4м фреймворке.

В этом есть разумное зерно. Если метод возвращает сразу несколько значений, то, скорее всего эти значения достаточно тесно связаны и класс для них смысл имеет. Если они вообще никак не связаны, значит с методом что-то нездоровое - скорее всего нарушение single responsibility. Лично я кортежи использую обычто только как замену анонимным классам (чаще всего просто запись короче получается), например:

Код: c#
1.
2.
3.
4.
foreach((string en, string ru) color in new[] { ("red", "красный"), ("green", "зеленый"), ("blue", "синий") }) 
{
    Console.WriteLine($"{color.en} -> {color.ru}");
}



Из метода кортежи я бы возвращать не стал.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813754
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
А var он использует?
В java позавчера только появилось)))
...
Рейтинг: 0 / 0
ref и out параметры
    #39813760
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyкортежи пока не используем, потому что сидим на 4м фреймворке.4-й фреймворк никак не мешает использованию кортежей. Вот буквально недавно Випросу пример приводил
...
Рейтинг: 0 / 0
ref и out параметры
    #39813763
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyкортежи пока не используем, потому что сидим на 4м фреймворке.4-й фреймворк никак не мешает использованию кортежей. Вот буквально недавно Випросу пример приводил 21857815
...
Рейтинг: 0 / 0
ref и out параметры
    #39813814
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123В java позавчера только появилось)))

А тебе что за печаль? Тебя же из жавы поперли, скоро из дотнета попрут - пойдешь на FoxPro 2.6 свои большие десктопы создавать
...
Рейтинг: 0 / 0
ref и out параметры
    #39813817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Таблеточек с утра выпей.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813842
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatА тебе что за печаль?Petro123Таблеточек с утра выпей.За продолжение Петя-болла пострадают оба его участника. Я предупредил
...
Рейтинг: 0 / 0
ref и out параметры
    #39813855
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatДело не в лоулевеле По сути метод с out/ref это метод с side effect, что не особо хорошо. Единственное, наверное, разумное применение, что я им вижу - это как раз упомянутый TryDoSomething(out blaBalBla). И то, можно заметить, что большинство таких стандартных методов всегда ходят парами - один с возможным ексепшеном, другой с "TryXXX".
А как же Deconstruct ?
А как же ref struct, readonly struct, readonly ref struct?
Да и по in кодревьюер походу еще не чухает.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813862
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyPetro123Antonariy,
Пример его варианта дайте.если нужно вернуть несколько значений, его вариант - наплодить классов.
кортежи пока не используем, потому что сидим на 4м фреймворке.объективно, у него нет оснований. Так что выпей с ним пиво. В шарпе еще много нового будет.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813870
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatPetro123В java позавчера только появилось)))

А тебе что за печаль? Тебя же из жавы поперли, скоро из дотнета попрут - пойдешь на FoxPro 2.6 свои большие десктопы создавать

к слову, попробуй сейчас найди мастера, чтобы на фоксе сделал что-то ;-)
...
Рейтинг: 0 / 0
ref и out параметры
    #39813874
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

Кто что думает по этому поводу?

goto бояться - в лес не ходить! это лучшее, что есть в разных языках
...
Рейтинг: 0 / 0
ref и out параметры
    #39813875
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Увы. У нас на работе java, шарп и c++
...
Рейтинг: 0 / 0
ref и out параметры
    #39813876
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЕще говорит, сложно читать и мешает композиции. Насчет первого это его личная проблема, мне читается прекрасно, а насчет композиции мне непонятно, о чем речь.

он, видимо, из разжалованных художников
...
Рейтинг: 0 / 0
ref и out параметры
    #39813877
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинэто лучшее,перебор))
...
Рейтинг: 0 / 0
ref и out параметры
    #39813880
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинgoto бояться - в лес не ходить! это лучшее, что есть в разных языках

Если использовать кодогенерацию, то goto самый то.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813888
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВкодогенерациютоже пребор. Но ставлю имхо)
...
Рейтинг: 0 / 0
ref и out параметры
    #39813923
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyкортежи пока не используем, потому что сидим на 4м фреймворке.4-й фреймворк никак не мешает использованию кортежей. Вот буквально недавно Випросу пример приводилИспользовать класс Tuple можно, но синтаксические кортежи не работают, они требуют поддержки какими-то другими классами, которых в 4м нет. Можно использовать какое-то дополнение, но не хочется, в обозримом будущем переедем на фреймворк поновее.
...
Рейтинг: 0 / 0
ref и out параметры
    #39813928
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор сидим на 4м фреймворке.к тому же на client profile
...
Рейтинг: 0 / 0
ref и out параметры
    #39813955
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
нужно только выбрать соответствующую версию языка
...
Рейтинг: 0 / 0
ref и out параметры
    #39814180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyИспользовать класс Tuple можно, но синтаксические кортежи не работают, они требуют поддержки какими-то другими классами, которых в 4м нет.Этот класс ValueTuple - его нет и в других фреймворках, не только в 4-м. При этом он прекрасно совместим и ставится из нугета, причем практически автоматом, как только начинаешь использовать именованные кортежи
Antonariyно синтаксические кортежи не работаютя ж даже скриншот привел, что работаютAntonariyк тому же на client profileда пофиг. Этот, как я сказал, отдельный класс и синтаксис языка. К фреймворку не имеет отношения.
...
Рейтинг: 0 / 0
ref и out параметры
    #39814226
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

В общем-то, туплы (которые с красивым синтаксисом) появились в C# 7, а его в старом фреймворке может и не быть (он, емнип, шел с минимум 4.6). Другое дело, что можно спокойно поставить новый фреймворк с ним, а собирать им для старого фреймворка (поставить в свойствах проекта Target Framework). Есть правда с этим засада при работе в команде - у кого-нибудь некрофила может проект с вашим кодом не собраться.
...
Рейтинг: 0 / 0
ref и out параметры
    #39814227
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Я имею в виду, не класс Tuple<T1, T2> и подобные, а поддержку конструкций типа

Код: c#
1.
(string firstName, string lastName) person = ("Joe", "Doe");



(она на самом деле именно в Tuple<string, string> компилятором и преобразуется)
...
Рейтинг: 0 / 0
ref и out параметры
    #39814235
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatВ общем-то, туплы (которые с красивым синтаксисом) появились в C# 7, а его в старом фреймворке может и не быть....Я имею в виду, не класс Tuple<T1, T2> и подобные, а поддержку конструкций типа мля, я же внятно сказал ValueTuple. И ссылку дал: 21857815
...
Рейтинг: 0 / 0
ref и out параметры
    #39814236
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat(она на самом деле именно в Tuple<string, string> компилятором и преобразуется)нет
...
Рейтинг: 0 / 0
ref и out параметры
    #39814237
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProfkthatВ общем-то, туплы (которые с красивым синтаксисом) появились в C# 7, а его в старом фреймворке может и не быть....Я имею в виду, не класс Tuple<T1, T2> и подобные, а поддержку конструкций типа мля, я же внятно сказал ValueTuple. И ссылку дал: 21857815

Все верно. У тебя таргетфреймворк 4, а компилятор стоит уже 7-й (это в настройках билда "Advanced" можно посмотреть или изменить). А у ТС может просто компилятора достаточно нового не быть. Мы сейчас точно так же стали, например, кое-что уже под коре 2 собирать на C# 8.
...
Рейтинг: 0 / 0
ref и out параметры
    #39814239
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Profkthat(она на самом деле именно в Tuple<string, string> компилятором и преобразуется)нетОчень важное отличие, на котором ты проколешься, раз думаешь, что именованные кортежи преобразуются в Tuple - это то, что именованный кортеж является структурой, а не классом, как Tuple.
...
Рейтинг: 0 / 0
ref и out параметры
    #39814240
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatВсе верно. У тебя таргетфреймворк 4, а компилятор стоит уже 7-й (это в настройках билда "Advanced" можно посмотреть или изменить). А у ТС может просто компилятора достаточно нового не быть. Мы сейчас точно так же стали, например, кое-что уже под коре 2 собирать на C# 8.Я читаю то, что было написано и не более:
Antonariyкортежи пока не используем, потому что сидим на 4м фреймворке.
...
Рейтинг: 0 / 0
ref и out параметры
    #39814241
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Ну я ими почти не пользуюсь, т.ч. таких ньюансов не особо знаю. Но один черт, оно преобразуется в чисто библиотечный тип данных, который, как ты уже упоминал ставится под любой четвертый фреймворк пакетом. Просто с более старым компилятором придется этот тип данных использовать напрямую, а с новым можно более удобным синтаксисом писать. Вот попробуй в настройках проекта переключится на C# 6 и оно уже не соберется.
...
Рейтинг: 0 / 0
ref и out параметры
    #39814264
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatПросто с более старым компилятором придется этот тип данных использовать напрямую, а с новым можно более удобным синтаксисом писать. Вот попробуй в настройках проекта переключится на C# 6 и оно уже не соберется.это ежу понятно, но речь-то не об этом ))) возможно люди ограничивают себя просто по незнанию
...
Рейтинг: 0 / 0
ref и out параметры
    #39814992
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

Кто что думает по этому поводу?

Человеку больше заняться нечем видимо. Обоснование по типу "потому что зелёное", не нужно ему в кодревью.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815087
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

Кто что думает по этому поводу?
А можно увидеть ваш метод, в котором используются out и ref параметры?
...
Рейтинг: 0 / 0
ref и out параметры
    #39815098
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Выше уже просил. Конкретику не показывают.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815129
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вот если бы код твой ревьювер сказал бы, например, что out/ref нельзя использовать в асинхронных методах и при необходимости переделывать их на асинк будет сложно рефакторить, вот это был бы разумный довод.

Опять же, ref действительно использовался в основном для поддержки работы с низкоуровневым АПИ, COM. Но это не касается out, который действительно очень полезен особенно вкупе с фичами C# 7, когда переменную можно объявить прям в out выражении.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815153
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВот если бы код твой ревьювер сказал бы, например, что out/ref нельзя использовать в асинхронных методах

А их и так нельзя использовать. Компилятор не даст.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815231
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVosttВот если бы код твой ревьювер сказал бы, например, что out/ref нельзя использовать в асинхронных методах

А их и так нельзя использовать. Компилятор не даст.Ты вырвал фразу из контекста.
hVostt на это и намекает во второй части предложения.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815244
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНо это не касается out, который действительно очень полезен особенно вкупе с фичами C# 7, когда переменную можно объявить прям в out выражении.

Мне все-таки как-то сложно придумать ему какую-то полезность, кроме паттерна "bool TryXXXX(out foo)" - кстати, это как раз и есть случай использования out-ов, на который code analysis не ругается.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815503
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79AntonariyМой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

Кто что думает по этому поводу?
А можно увидеть ваш метод, в котором используются out и ref параметры?А какая разница? По смыслу - TryParse. Например, метод открытия файла, возвращающий успех/неуспех и текст с путем к файлу или текст ошибки (в зависимости от успеха).
...
Рейтинг: 0 / 0
ref и out параметры
    #39815505
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или несколько разнородных объектов преобразовать в несколько объектов других родов.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815513
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyметод открытия файла, возвращающий успех/неуспех и текст с путем к файлу или текст ошибки (в зависимости от успеха).
А почему не предусмотрели такой механизм в платформе? )))) именно для файлов возможно и не нужно так
...
Рейтинг: 0 / 0
ref и out параметры
    #39815514
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНу или несколько разнородных объектов преобразовать в несколько объектов других родов.
Это еще хуже, это имхо чистый exception
...
Рейтинг: 0 / 0
ref и out параметры
    #39815521
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Обязательно файл что ли?
По факту это требуется возврат два, три значения сразу. Без компоновки в класс.
Почему нет?
Ну а ref конвейерная обработка.
Я за свободу).
...
Рейтинг: 0 / 0
ref и out параметры
    #39815536
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНапример, метод открытия файла, возвращающий успех/неуспех и текст с путем к файлу или текст ошибки (в зависимости от успеха).

Звучит, как метод, который в зависимости от возвращаемого bool возвращает температуру на южном полюсе или цену на котлеты в соседнем бургеркинге.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815576
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

если у тебя постоянно используется ref/out/Tuple в коде - то точно что-то не то в консерватории, скорее всего очень непродуманная структура кода и классов, методы делающие и возвращающие несвязанные вещи. Такой код невозможно нормально читать и сопровождать. Ревьювер должен не на сами конструкции указывать, а на более фундаментальные проблемы кода, приведшие к их использованию
...
Рейтинг: 0 / 0
ref и out параметры
    #39815601
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordесли у тебя постоянно да. Ключевое слово постоянно.
Так же как cons, global и... размер метода в строках. Всему есть мера).
...
Рейтинг: 0 / 0
ref и out параметры
    #39815608
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Нет, не обязательно )) Я ж не говорю, что плохо. Поэтому предложил сам метод показать, а не "по аналогии", "что-то похожее", так как аналогии могут быть и неверны

Ничего плохого в паттерне Try* нет, но справедливости ради следует отметить, что в в .net его применяют нечасто.

В случае с файлом вполне можно применять, если, например, файл не ваш, а пользуетесь чьим то другим. И не знаете, снята или нет монопольная блокировка. Но и это не 100%, так как монопольно занятый файл приводит при попытке доступа к exception. Иногда есть смысл глушить исключение, а иногда нет.

Без понимания контекста задачи нельзя однозначно сказать, хорошо это или плохо.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815613
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Еще пример, рекурсия. Очень удобен сабж в рекурсии.
Еще пример, пересечение геометрии
Type Intersect(out pnt1, out pn2...
И т.д.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815614
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Без понимания контекста задачи нельзя однозначно сказать, хорошо это или плохо.еще бы. Программирование это искусство а не ремесло (с)))))
...
Рейтинг: 0 / 0
ref и out параметры
    #39815656
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79
Ничего плохого в паттерне Try* нет, но справедливости ради следует отметить, что в в .net его применяют нечасто.


Вообще он появился когда C# был беден на конструкции.
В других языках применяется следующие. в GO что то типа
Код: c#
1.
2.
3.
4.
5.
6.
     public static (bool success, bool res) Parse(string str)
        {                
            if (string.Compare("true", str, true) == 0)
                return (true, true);
            return (false, false);
        }


В f# есть размеченные объединения, которые в итоге разворачиваются во что то подобное.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
      public class BaseRes { }
        public class None : BaseRes { }
        public class Some<T> : BaseRes
        {
            public T Value { get; private set; }
            public Some(T t)
            {
                Value = t;
            }
        }

        public static BaseRes ParseBool(string str)
        {
            if (string.Compare("true", str, true) == 0)
                return new Some<bool>(true);
            return new None();
        }
...
Рейтинг: 0 / 0
ref и out параметры
    #39815662
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВообще он появился когда C# был беден на конструкции.странная фраза.
Ref, out это преимущество шарп.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815693
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ref, out это преимущество шарп.
in еще может быть
ref и out скорее некий компромис, необходимый для взаимодействия с неупровляемым кодом.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815705
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Насколько я помню, как раз в GO применяют такую конструкцию из-за проблем с exception - точнее, из-за другой концепции обработки exception

Так что говорить о "бедности" языковых конструкций C# некорректно
...
Рейтинг: 0 / 0
ref и out параметры
    #39815713
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,
Юз кейс я написал. Неуправляемый код у меня особенность чисто на деструктор.
Да и зачем его неуправляемым делать).
Поэтому передать по ссылке/указателю и выхолные бывает использую.
Всё испрльзую кроме GOTO))))
Его только в батниках.
Имхо
...
Рейтинг: 0 / 0
ref и out параметры
    #39815730
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Так что говорить о "бедности" языковых конструкций C# некорректно
Я к тому, что шарп в последнее время обогатился конструкциями и так называемый паттерн TryXXXX пока в топку.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815733
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Под неуправляемым кодом я имел ввиду именно неуправляемый, как ты это вызовешь без out?
...
Рейтинг: 0 / 0
ref и out параметры
    #39815750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВPetro123,
Под неуправляемым кодом я имел ввиду именно неуправляемый, как ты это вызовешь без out?а я это называл когда то в дельфи win api32).
OK

ЕвгенийВпаттерн TryXXXX
А чем давить исключения в цикле?
...
Рейтинг: 0 / 0
ref и out параметры
    #39815752
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВшарп в последнее времялет 15 или лет 5 это последнее врнмя?
...
Рейтинг: 0 / 0
ref и out параметры
    #39815821
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЕвгенийВPetro123,
Под неуправляемым кодом я имел ввиду именно неуправляемый, как ты это вызовешь без out?а я это называл когда то в дельфи win api32).
OK

Конкретно это не win api.
Petro123ЕвгенийВпаттерн TryXXXX
А чем давить исключения в цикле?
Зачем их давить? Вообще исключения не самая легкая штука, если часто возникают случаи например не корректности данных, то их нужно валидировать другими способами, не доводя до бросания исключений.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815835
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatМне все-таки как-то сложно придумать ему какую-то полезность, кроме паттерна "bool TryXXXX(out foo)" - кстати, это как раз и есть случай использования out-ов, на который code analysis не ругается.

Полезность великая. Достать значение из словаря или подобной структуре одним выражением, распарсить строку, любая попытка чего-либо.

Иначе, придётся городить что-то типа возврата OperationResult с Payload, что не так уж и плохо, так как функционально и работает с async/await.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815845
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЗачем их давить? Вообще исключения не самая легкая штука, если часто возникают случаи например не корректности данных, то их нужно валидировать другими способами, не доводя до бросания исключений.ты как будто не читал что я пишу.
Я давлю именно в юз кейсе ЦИКЛА.
Именно шаблоном tryXXX
Знаешь ДРУГИЕ способы - рассказывай.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815918
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПолезность великая. Достать значение из словаря или подобной структуре одним выражением, распарсить строку, любая попытка чего-либо.
Ну так это и есть шаблон bool TryXXX(out ...), про который я писал.

hVosttИначе, придётся городить что-то типа возврата OperationResult с Payload, что не так уж и плохо, так как функционально и работает с async/await.
Тем более, что для таких случаев можно общий дженерик завести.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815921
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как уже писали - неплохо было бы увидеть пример отбракованного кода. Сильно подозреваю, что там будет как почти всегда: "тупой тимлид гнобит юное дарование".
...
Рейтинг: 0 / 0
ref и out параметры
    #39815928
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatКак уже писали - неплохо было бы увидеть пример отбракованного кода. Сильно подозреваю, что там будет как почти всегда: "тупой тимлид гнобит юное дарование".

Отсутствует адекватное обоснование, при чём тут "гнобление"?
Вся суть ревью это не только контроль качество кода, но и шаринг знаний.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815932
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОтсутствует адекватное обоснование, при чём тут "гнобление"?
Вся суть ревью это не только контроль качество кода, но и шаринг знаний.
Ну так в исходном сообщение явно была жалоба на тяжелую жизнь.
...
Рейтинг: 0 / 0
ref и out параметры
    #39815944
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatНу так в исходном сообщение явно была жалоба на тяжелую жизнь.

Не думаю, что это является предметом обсуждения :)
По крайне мере до тех пор, пока не станет ясно, что ТС не прав
...
Рейтинг: 0 / 0
ref и out параметры
    #39816055
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакой код с реф/аут отбракован не был, его утвердил тимлид.
Сабж не любит напарник, ревьюят оба.
Напарник внятно объяснить свою нелюбовь не смог, поэтому я попросил помощь зала, поскольку в голову никогда не приходило страдать такими вопросами.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816063
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordесли у тебя постоянно используется ref/out/Tuple в коде - то точно что-то не то в консерватории, скорее всего очень непродуманная структура кода и классов, методы делающие и возвращающие несвязанные вещи.В консерватории очень много чего не так. Например, провайдер данных может зависеть от потребителя.)
Не я эту консерваторию запиливал.

И "постоянство" тут относительное. Я использую сабж редко, но каждый раз, как использую, получаю замечание и требование переписать. Иногда переписываю, иногда отстаиваю ref/out, если вижу, что альтернативные варианты чреваты кучей декоративного говнокода, который даже не будет повторно использован.
stenfordТакой код невозможно нормально читать и сопровождать.Некоторые куски я переписываю декларативно на linq, даже не пытаясь разобраться, как исходное говно работает.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816087
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy... на linq, даже не пытаясь разобраться, как исходное говно работает.
лучше чем linq - стопудово
...
Рейтинг: 0 / 0
ref и out параметры
    #39816095
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosлучше чем linq - стопудово
О, вот и некрофилия подтянулась. Дженерики - порождение диавола. Самому не смешно, в 2019 году-то?
...
Рейтинг: 0 / 0
ref и out параметры
    #39816100
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatViPRosлучше чем linq - стопудово
О, вот и некрофилия подтянулась. Дженерики - порождение диавола. Самому не смешно, в 2019 году-то?
когда пишешь всякую фигню можно и дженерики
приходи лет через 20
...
Рейтинг: 0 / 0
ref и out параметры
    #39816104
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosприходи лет через 20
Послушать, как ты будешь тут спрашивать про миграцию с фокспро 2.6 на 6.0?
...
Рейтинг: 0 / 0
ref и out параметры
    #39816228
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAntonariy... на linq, даже не пытаясь разобраться, как исходное говно работает.
лучше чем linq - стопудово"лучше" - характеристика качественная, ничего не говорящая о предмете конкретно.

решения с linq обычно работают медленнее, но они втрое-вчетверо меньше по объему и во столько же более читаемее. в том слое, где практикуются такие переписывания, это приемлемо, прозрачность и безглючность кода важнее производительности.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816243
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyрешения с linq обычно работают медленнее
В общем-то, только из-за доп. расходов на компиляцию лямбд (я и тут даже не уверен, м.б. в случае LINQ to Objects это уже компилятор заранее делает - надо будет декомпилятором как-нибудь посмотреть) - других причин я придумать не могу - внутри будет такой же foreach.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816277
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatAntonariyрешения с linq обычно работают медленнее
В общем-то, только из-за доп. расходов на компиляцию лямбд (я и тут даже не уверен, м.б. в случае LINQ to Objects это уже компилятор заранее делает - надо будет декомпилятором как-нибудь посмотреть) - других причин я придумать не могу - внутри будет такой же foreach.Замедление не от самого linq, а от обвеса, с которым он работает.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816281
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А обвес работает с экселем) Поэтому шаг влево, шаг вправо от идеального по быстродействию способа - и эксель провисает.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816286
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatAntonariyрешения с linq обычно работают медленнее
В общем-то, только из-за доп. расходов на компиляцию лямбд (я и тут даже не уверен, м.б. в случае LINQ to Objects это уже компилятор заранее делает - надо будет декомпилятором как-нибудь посмотреть) - других причин я придумать не могу - внутри будет такой же foreach.
В случае LINQ to Objects компиляции лямб нет, если не делать AsQueryable
...
Рейтинг: 0 / 0
ref и out параметры
    #39816289
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЗамедление не от самого linq, а от обвеса, с которым он работает.
Есть замедление, ибо там сплошной вызов делегатов, хотя с другой стороны ленивые вычисления.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816307
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВAntonariyЗамедление не от самого linq, а от обвеса, с которым он работает.
Есть замедление, ибо там сплошной вызов делегатов, хотя с другой стороны ленивые вычисления.
Делегат как-то принципиально по-другому вызывается по сравнению с обычным методом?
...
Рейтинг: 0 / 0
ref и out параметры
    #39816313
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА обвес работает с экселем) Поэтому шаг влево, шаг вправо от идеального по быстродействию способа - и эксель провисает.

Если с екселем работаешь через COM, то там накладные расходы на его вызовы такие, что все остальное вообще никак влиять не должно.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816324
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatДелегат как-то принципиально по-другому вызывается по сравнению с обычным методом?
Ясен пень
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// 		Action action = delegate
		// 		{
		// 			double num = Math.Cos(12.3);
		// 		};
		IL_0003: ldsfld class [mscorlib]System.Action ConsoleApp2.Program/'<>c'::'<>9__1_1'
		// (no C# code)
		IL_0008: dup
		IL_0009: brtrue.s IL_0022

		IL_000b: pop
		IL_000c: ldsfld class ConsoleApp2.Program/'<>c' ConsoleApp2.Program/'<>c'::'<>9'
		IL_0011: ldftn instance void ConsoleApp2.Program/'<>c'::'<Main>b__1_1'()
		IL_0017: newobj instance void [mscorlib]System.Action::.ctor(object, native int)
		IL_001c: dup
		IL_001d: stsfld class [mscorlib]System.Action ConsoleApp2.Program/'<>c'::'<>9__1_1'

		IL_0022: stloc.0
		// action();
		IL_0023: ldloc.0
		IL_0024: callvirt instance void [mscorlib]System.Action::Invoke()


Против
Код: c#
1.
2.
	// <Main>g__InnerFunction|1_0();
		IL_002a: call void ConsoleApp2.Program::'<Main>g__InnerFunction|1_0'()
...
Рейтинг: 0 / 0
ref и out параметры
    #39816365
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Инструкций больше, это-то и так понятно, но, именно принципиальной разницы, как, например "раннее связывание" и "позднее связывание" тут нет. И там и там метод прямо по указателю вызывается.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816492
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatAntonariyА обвес работает с экселем) Поэтому шаг влево, шаг вправо от идеального по быстродействию способа - и эксель провисает.

Если с екселем работаешь через COM, то там накладные расходы на его вызовы такие, что все остальное вообще никак влиять не должно.А от COM никуда не денешься, виндовый офис имеет его в своем фундаменте. Работаю через NET-обертки ExcelDna+NetOffice, так что добавь еще накладные расходы внутри них. Однако даже их сумма ничто по сравнению с производительностью самих вызываемых методов.

Например, удаление диапазона строк. Удаление одной строки и сотни строк по времени почти одинаково, но если удалять диапазон построчно, то время возрастает в разы, даже если поотключать экселю все обновления и события. Это самый очевидный кейс, и его я оптимизирую, если натыкаюсь на построчное удаление, а самый распространенный - атомарная операция присвоения массива диапазону, и тут местами приходится разоптимизировать. Метод, создающий массив, обычно имеет кучу параметров, определяющих его внешний вид и размер, данные для массива разнородные, полет мысли авторов, собирающих эти данные в кучу, неописуем. В результате имеем кучу нечитаемых методов, непригодных для повторного использования - грубо говоря, в новом методе массив формируется новым способом, и здесь правят бал Tuple<>. Приходится дробить атомарную операцию на осмысленные куски (которые возможно повторно использовать в других методах), выводя кусками и массив, и это основная причина проседания производительности. Но терпимая.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816498
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЕвгенийВ,

Инструкций больше, это-то и так понятно, но, именно принципиальной разницы, как, например "раннее связывание" и "позднее связывание" тут нет. И там и там метод прямо по указателю вызывается.так-то ранее связывание отличается от позднего тем, что во втором как раз и есть больше инструкций, занимающимися тем, чем при раннем связывании занимается компилятор - определением адреса вызываемого метода)
...
Рейтинг: 0 / 0
ref и out параметры
    #39816585
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
У вас проблема вроде не в скорости была).
...
Рейтинг: 0 / 0
ref и out параметры
    #39816662
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Linq почти все вызовы больше O(n), так как последовательность IEnumerabl<T> не упорядочена, не имеет фиксированного размера, нет предоставляет прямой доступ по индексу к элементам последовательности, что делает невозможным применение более быстрых алгоритмов логарифмической сложности O(logn) и константного время доступа к элементам последовательности.
Время материализации постоянно O(c) для всех случаев, им можно пренебречь, ведь и для обычных массивов и для IEnumerable<T> данные в любом случае придется загрузить.
Массив в отличии от последовательности, это непрерывная область в памяти фиксированной длинны, то есть вероятность того, что весь массив или его часть окажется закэширован выше, чем в случае с последовательностью, ведь не факт, что за кулисами массив. И в момент обращения к первому элементу, 2 вообще еще существует.

Linq и последовательности, по очевидным причинам удобнее, лаконичнее, короче, нагляднее и выразительнее, чем работа с более низкоуровневыми типами. А концепция методов расширения позволяет расширить её и добавить сколько угодно новых методов.

За собой замечаю, что все больше отдаю предпочтение массивам T[], особенно если последовательность имеет фиксированный размер и важен доступ через индексатор.

Оптимизация нужна не всегда и не везде. Нет смысла городить сложные алгоритмы поиска в наборе из 100 записей, при реализации функционала если задача выполняется за разумное\требуемое время, нет смысла делать её быстрее.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816683
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

В Linq многие методы оптимизированы за счет того, что они сначала смотрят, что на самом деле лежит под IEnumerable и для "знакомых" им коллекций вызывают соответствующие "быстрые" методы или свойства. Поясню на примере:
Код: c#
1.
new [] {1, 2, 3, 4}.Count()


В этом случае Сount() распознает, что в него передали массив и не станет просто перебирать его элементы и подстчитывать, а сразу вернет свойство Length.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816686
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВ случае LINQ to Objects компиляции лямб нет, если не делать AsQueryable
Да, посмотрел - там блямбда преобразуется в делегат уже самим компилятором.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816704
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatRoman Mejtes,

В Linq многие методы оптимизированы за счет того, что они сначала смотрят, что на самом деле лежит под IEnumerable и для "знакомых" им коллекций вызывают соответствующие "быстрые" методы или свойства. Поясню на примере:
Код: c#
1.
new [] {1, 2, 3, 4}.Count()


В этом случае Сount() распознает, что в него передали массив и не станет просто перебирать его элементы и подстчитываеть, а сразу вернет свойство Length.
Ваш пример, это наилучший результат выполнения метода, подобный тому, если бы N было равно 0 или 1, размер коллекции мы бы получили немедленно, практически за константное время. Но при оптимизации рассматривают наихудший из возможных сценариев, а не наилучший. В худшем из сценариев, данный метод может занимать огромное количество времени.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816705
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyтак-то ранее связывание отличается от позднего тем, что во втором как раз и есть больше инструкций, занимающимися тем, чем при раннем связывании занимается компилятор - определением адреса вызываемого метода)
Ну так если рассуждать, то вообще ничего от ничего не отличается. MS Office отличается от SQL Server только количеством и порядком инструкций.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816713
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesВаш пример, это наилучший результат выполнения метода, подобный тому, если бы N было равно 0 или 1, размер коллекции мы бы получили немедленно, практически за константное время. Но при оптимизации рассматривают наихудший из возможных сценариев, а не наилучший. В худшем из сценариев, данный метод может занимать огромное количество времени.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public static int Count<TSource>(this IEnumerable<TSource> source)
{
	if (source == null)
	{
		throw Error.ArgumentNull("source");
	}
	ICollection<TSource> collection = source as ICollection<TSource>;
	if (collection != null)
	{
		return collection.Count;
	}
	ICollection collection2 = source as ICollection;
	if (collection2 != null)
	{
		return collection2.Count;
	}
	int num = 0;
	using (IEnumerator<TSource> enumerator = source.GetEnumerator())
	{
		while (enumerator.MoveNext())
		{
			num = checked(num + 1);
		}
		return num;
	}
}
...
Рейтинг: 0 / 0
ref и out параметры
    #39816759
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatViPRosприходи лет через 20
Послушать, как ты будешь тут спрашивать про миграцию с фокспро 2.6 на 6.0?
пшел бы
...
Рейтинг: 0 / 0
ref и out параметры
    #39816774
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariystenfordесли у тебя постоянно используется ref/out/Tuple в коде - то точно что-то не то в консерватории, скорее всего очень непродуманная структура кода и классов, методы делающие и возвращающие несвязанные вещи.В консерватории очень много чего не так. Например, провайдер данных может зависеть от потребителя.)
Не я эту консерваторию запиливал.

Стоило бы спросить у стенфорда, например, в чём проблема ref/out/Tuple, но внятного ответа ты не дождёшься. Одно только ясно "что-то не то"

Ох уж эта религия..
...
Рейтинг: 0 / 0
ref и out параметры
    #39816796
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

По-моему он в своем сообщении вполне понятно написал.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816826
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVostt,

По-моему он в своем сообщении вполне понятно написал.

Ничего понятного тут нет и в помине. Ты испольуешь ref/out -- значит у тебя (скорее всего) "очень непродуманная структура". Рили?

Это прекрасно, я смотрю тут многим не нужно в ревью, настоятельно.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816899
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt в чём проблема ref/out/Tuple, но внятного ответа ты не дождёшься. Одно только ясно "что-то не то"


Проблема в слабости системы типов C#.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816903
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

На этот случай должны быть утвержденные кодинг-стайл гайдлайнс, чтобы не тратить по полдня читая лекции про правильный дизайн каждому джуну. Подрастут, книжек умных почитают, и сами разберутся что к чему.
...
Рейтинг: 0 / 0
ref и out параметры
    #39816907
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesв Linq почти все вызовы больше O(n),
Тут можно поспорить.
Посчитай O(?)
для
Код: c#
1.
2.
var dfg = new[] {21, 1, 2, 3, 4 }.AsParallel().
                Select(x => x * x);
...
Рейтинг: 0 / 0
ref и out параметры
    #39817257
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВRoman Mejtesв Linq почти все вызовы больше O(n),
Тут можно поспорить.
Посчитай O(?)
для
Код: c#
1.
2.
var dfg = new[] {21, 1, 2, 3, 4 }.AsParallel().
                Select(x => x * x);


и? как параллелизм, в данном случае, влияет на алгоритм? каждый элемент массива будет возведен в квадрат, в 2, 10 или 1 потоке это происходит, не имеет значения.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817389
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVostt,

На этот случай должны быть утвержденные кодинг-стайл гайдлайнс, чтобы не тратить по полдня читая лекции про правильный дизайн каждому джуну. Подрастут, книжек умных почитают, и сами разберутся что к чему.

Как относится кодинг-стайл к out/ref?
...
Рейтинг: 0 / 0
ref и out параметры
    #39817395
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ну, пускай, выкинем "style", назовем просто "coding guidelines", или "best practice" - один черт все, я думаю, поняли о чем я.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817407
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesЕвгенийВпропущено...

Тут можно поспорить.
Посчитай O(?)
для
Код: c#
1.
2.
var dfg = new[] {21, 1, 2, 3, 4 }.AsParallel().
                Select(x => x * x);


и? как параллелизм, в данном случае, влияет на алгоритм? каждый элемент массива будет возведен в квадрат, в 2, 10 или 1 потоке это происходит, не имеет значения.
Как то так.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817408
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesЕвгенийВпропущено...

Тут можно поспорить.
Посчитай O(?)
для
Код: c#
1.
2.
var dfg = new[] {21, 1, 2, 3, 4 }.AsParallel().
                Select(x => x * x);


и? как параллелизм, в данном случае, влияет на алгоритм? каждый элемент массива будет возведен в квадрат, в 2, 10 или 1 потоке это происходит, не имеет значения.как это не имеет? а выигрыш в производительности? либо у тебя в одном потоке все считается, либо в разных потоках разбрасывается кусками по ядрам и все куски считаются параллельно.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817409
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Сложность алгоритма это формальное понятие и к практической производительности имеет условное отношение. Хоть стопиццот ядер поставь, но формальная сложность будет все равно O(N).
...
Рейтинг: 0 / 0
ref и out параметры
    #39817411
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatAntonariy,

Сложность алгоритма это формальное понятие и к практической производительности имеет условное отношение. Хоть стопиццот ядер поставь, но формальная сложность будет все равно O(N).
Все зависит от алгоритма.
Быстрая сортировка легко распараллеливается, а вычисление чисел Фибоначчи нет. Этот факт при подсчете сложности нельзя не учитывать.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817413
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Ну опять-таки - никак не связано. Распараллеливай, не распараллеливай, но кол-во действий будет то же самое, хоть и выполнятся они быстрее (если на нескольких ядрах), т.ч. O() то же самое. И, тупой "пузырек", например, будет намного быстрее чем qsort, если ими массив из нескольких чисел сортировать - к асимптотической сложности это отношения никакого не имеет. O(N) означает только что есть такие C и M, что T(N > M) / N всегда не больше C. Насколько большие или малые эти C и N определение ничего не говорит. Они, например, могут быть настолько большие, что на любых реальных данных O(N) может оказаться медленней чем хоть O(N!), я же говорю - это чисто формально-теоретическое понятие.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817500
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Вообще вычислительная сложность складывается из временной сложности и пространственной сложности.
Временная является функцией от количества обрабатываемых элементов и если мы можем распараллелить, поделить хотя бы на 2, уже очень круто.
Проще говоря у тебя сильно больше шансов дождаться результатов работы алгоритма, который будет работать 25 лет, чем у того, который будет работать 50 лет.
...
Рейтинг: 0 / 0
ref и out параметры
    #39817541
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

последовательность Фибоначчи легко параллелизуется
с помощью перемножения матриц можно за log(n) найти значение числа N в последовательности, если у нас 4 потока, то находим 8 начальных значений, потом просто в 4 потока заполняем последовательность
...
Рейтинг: 0 / 0
ref и out параметры
    #39817568
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesЕвгенийВ,

последовательность Фибоначчи легко параллелизуется
с помощью перемножения матриц можно за log(n) найти значение числа N в последовательности, если у нас 4 потока, то находим 8 начальных значений, потом просто в 4 потока заполняем последовательность
А подробнее? Где почитать?
...
Рейтинг: 0 / 0
ref и out параметры
    #39817573
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПроще говоря у тебя сильно больше шансов дождаться результатов работы алгоритма, который будет работать 25 лет, чем у того, который будет работать 50 лет.

Код: c#
1.
2.
3.
4.
5.
6.
var end = DateTime.Now.AddYears(50);
while (DateTime.Now < end)
{
    Thread.Sleep(int.MaxValue);
}
Console.WriteLine(42);
...
Рейтинг: 0 / 0
ref и out параметры
    #39817588
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА подробнее? Где почитать?
Я тоже заинтересовался, бегло поискал - там суть в возведении в степень определенной матрицы 2х2 из нулей и единиц. Гуглом легко найти кучу ссылок.
...
Рейтинг: 0 / 0
120 сообщений из 120, показаны все 5 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ref и out параметры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]