Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

.NET und C# ohne Web?

4812  1 2 3 4 5 6 7 8 9 10 все
AlexNek патриот19.05.21 22:27
AlexNek
NEW 19.05.21 22:27 
в ответ Программист 19.05.21 22:20

#41 
MrSanders коренной житель19.05.21 23:03
NEW 19.05.21 23:03 
в ответ AlexNek 19.05.21 21:50, Последний раз изменено 19.05.21 23:27 (MrSanders)
знаете, что происходит в виуал студии при отладке и ожившим эксепшен?

Нет, не знаю. Но меня это не волнует. Допустим мелкософт не в состоянии состряпать дебаггер работающий с исключениями. Это что, повод от них отказываться?

то надо было микрософту сказать лет х этак назад

Мелкомягких надо было душить в колыбели, да.


Но если исключение нам не надо, то надо для начала решить где мы и как вообще программируем. В ОО? Тогда что-то вроде OptionalInt возвращаем. В функциональном? Конечно кортеж.

В дурной поделке в которой намешано всё что можно и сверху бантик? Придумываем очередную ерунду для аргументов, бесспорно, ref нам было мало.


P.S. Кстати, вспомнил, в Шарпе есть и подобие union type - OneOf. Можно возвращать OneOf<int, string> или int или строку с ошибкой.

#42 
koder патриот20.05.21 06:17
koder
NEW 20.05.21 06:17 
в ответ Murr 19.05.21 22:24
Вместе с тем - есть нуллабле типы - не можешь - верни нулл и не парься..

Это разные вещи. Эксэпшион означает - я должен считать, но не могу. Поэтому обрываю работу в виду невозможности продолжения. Возврат наля означает - а я могу, у меня все в порядке, посмотрите, какую интересную фигню я вам насчитал.

#43 
koder патриот20.05.21 06:20
koder
NEW 20.05.21 06:20 
в ответ AlexNek 19.05.21 21:01, Последний раз изменено 20.05.21 06:24 (koder)

Джентельмены, я не сишник, а чем отличается out от ref и что такое кортеж? Чем кортеж отличается от массива?

#44 
Срыв покровов коренной житель20.05.21 06:50
NEW 20.05.21 06:50 
в ответ koder 20.05.21 06:20

кортеж это Tuple - сам только сейчас узнал, что на есть русская адаптация.
предком современных кортежей был класс Tuple<Type1, Type2, …, TypeN>.

#45 
Срыв покровов коренной житель20.05.21 06:51
NEW 20.05.21 06:51 
в ответ koder 20.05.21 06:20

отличия Ref от Out сейчас точно не назову, такое только олдфаги используют))


#46 
koder патриот20.05.21 06:57
koder
NEW 20.05.21 06:57 
в ответ Срыв покровов 20.05.21 06:50

Сорри, представьте, что вы рассказываете папуасу о машинах. Мерседес это как БМВ, а предком у всех был порше улыб Я не шарповед, я явист. Вы мне по возможности на пальцах обьясните, вот такая классная фича, вот что можно с ней удобнее делать. В противовес массив как аргумент функции. Для чего нужна еще одна сущность, если есть массивы?

#47 
Программист коренной житель20.05.21 07:19
NEW 20.05.21 07:19 
в ответ AlexNek 19.05.21 22:27

Ну так это же как раз то, что нужно :) Тебе сразу показывается проблемное место. Что может быть лучше?

#48 
Программист коренной житель20.05.21 07:23
NEW 20.05.21 07:23 
в ответ Murr 19.05.21 22:24
Вместе с тем - есть нуллабле типы - не можешь - верни нулл и не парься...

Exception - это ошибка, null - рабочее состояние.

#49 
Murr патриот20.05.21 07:33
Murr
NEW 20.05.21 07:33 
в ответ koder 20.05.21 06:20
чем отличается out от ref

-----

https://www.geeksforgeeks.org/difference-between-ref-and-o...

2 и 4 в табличке внизу.


Чем кортеж отличается от массива?

-----

Массив, обычно, однотипен.

А у кортежа не факт что есть индексер.

А вообще - не требовлось пока до кортежей подниматься.

#50 
Hryu местный житель20.05.21 07:35
NEW 20.05.21 07:35 
в ответ alex445 19.05.21 17:06

Я серьезно. Не пиши этих букв. Просто "gut" или "Sehr gut" или "Verhandlungssicher".

#51 
Программист коренной житель20.05.21 07:38
NEW 20.05.21 07:38 
в ответ koder 20.05.21 06:20
чем отличается out от ref

out - используется исключительно для возврата значения

ref - это входное и возвращаемое значение


что такое кортеж?

контейнер объектов. Считай, что это класс к вотором есть только геттеры.


Чем кортеж отличается от массива?

1) кортеж может хранить объекты разных типов

2) у кортежа нет итератора и нет доступа по индексу

3) кортеж хранит фиксированное (и заранее известное) количество полей

Короче говоря, если тебе надо чтобы функция возвращала больше одного значения - кортеж хорошее решение. С другой стороны, использование кортежей (aka необходимость возвращать несколько значений) оправдано практически никогда, так что говорит скорее о плохом дизайне :)

#52 
Murr патриот20.05.21 07:39
Murr
NEW 20.05.21 07:39 
в ответ koder 20.05.21 06:57

на пальцах обьясните

------

out -

ты не можешь передать значение в метод, но обязан в методе присвоить значение


ref -

ты обязан инициировать переменную и значение передается в метод, по выходе изменения в переменной переписываются в исходную переменную.

не помню содается ли копия или будут состязания.

#53 
Murr патриот20.05.21 07:51
Murr
NEW 20.05.21 07:51 
в ответ koder 20.05.21 06:17

у меня все в порядке

-----

У тебя и так все в порядке - в трай-методе ты используешь оут-параметер чтобы вернуть значение и возвращаемое значение чтобы сказать можно ли использовать возвращенное.

При возврате нулабельного типа ты получаешь оба куска информации упакованными в переменную нуллабле типа. Оут-параметер не нужен.

А эксептиона в трай-методах у нас нет.


Возврат наля означает

-----

именно возврат нулла. Не более.

Какой смысл туда вложен = зависит от программиста.

#54 
Murr патриот20.05.21 07:54
Murr
NEW 20.05.21 07:54 
в ответ Программист 20.05.21 07:23

Exception - это ошибка

------

У тебя нет ехцептионов в трай-методах. См выше.

#55 
Murr патриот20.05.21 07:57
Murr
NEW 20.05.21 07:57 
в ответ Программист 20.05.21 07:38

out - используется исключительно для возврата значения

-----

Пропустил обязательность возврата.

#56 
Срыв покровов коренной житель20.05.21 08:03
NEW 20.05.21 08:03 
в ответ Программист 20.05.21 07:38
оправдано практически никогда, так что говорит скорее о плохом дизайне :)

Сказал, как отрезал.
навскидку: вот нужна мне функция, которая выдаёт корни квадрантного уравнения

Или функция, которая выдаёт немецкую календарную неделю: kw, year переданной даты.

#57 
Срыв покровов коренной житель20.05.21 08:06
20.05.21 08:06 
в ответ koder 20.05.21 06:57
Я не шарповед, я явист.

Ну сорри

Я конечно знал, что Ява отстаёт, но не настолько))

#58 
Программист коренной житель20.05.21 08:16
NEW 20.05.21 08:16 
в ответ Murr 20.05.21 07:54, Последний раз изменено 20.05.21 08:16 (Программист)
У тебя нет ехцептионов в трай-методах. См выше.

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

#59 
Срыв покровов коренной житель20.05.21 08:24
NEW 20.05.21 08:24 
в ответ Программист 20.05.21 08:16

то есть ты программируешь как-то вот так:


Int result

String input

Try

{

Result = Int.parse(input)

}
catch

{
System.out.println(„не фартануло(“)

}

#60 
1 2 3 4 5 6 7 8 9 10 все