Существует ли когда-нибудь оправдание за выдачу Исключения от неявного преобразования?

одним словом? Межплатформенный

6
задан Matthew Scharley 8 October 2009 в 12:16
поделиться

4 ответа

Я придерживаюсь рекомендаций: никогда не следует выбрасывать из неявного преобразования.

Я определенно не стал бы предоставлять неявное преобразование в этом случае. Мне кажется неправильным даже идея явного приведения: Foo x = (Foo) fooCollection просто не кажется правильной.

Почему бы вам просто не позволить вызывающему коду позаботиться о преобразовании из FooCollection в Foo ? Код будет намного более интуитивно понятным для всех:

Foo a = fooCollection[0];
Foo b = fooCollection.First();
Foo c = fooCollection.FirstOrDefault();
// etc
10
ответ дан 9 December 2019 в 22:36
поделиться

Это явно не нормально. Никогда не используйте исключения для реализации логики!

Вы можете использовать Linq-Statement FooCollection.FirstOrDefault () , который даст null или первый элемент.

1
ответ дан 9 December 2019 в 22:36
поделиться

Неявная копия, которая работает, только если в коллекции всего 1 элемент? На самом деле, в большинстве случаев это не работает?

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

0
ответ дан 9 December 2019 в 22:36
поделиться

Приведение должно быть явным. Было бы очень странно иметь возможность назначить FooCollection объекту Foo , по крайней мере, без приведения типов.

При этом приведение типов IMHO - не лучший способ сделать этот. Даже если вы откажетесь от этого, я буду использовать функцию, потому что даже если у вас нет контроля над реализацией этих классов, вы можете по крайней мере добавить методы расширения, такие как Foo ToFoo (эта коллекция FooCollection) для выполнения работы.

0
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: