2 / 2 / 1
Регистрация: 12.01.2017
Сообщений: 36
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Разные типы в обобщенном методе28.06.2017, 20:33. Показов 1781. Ответов 7
Метки нет Все метки)
(
Здравствуйте.
Хочу написать следующий метод: подается массив типа int или string или object и тд, и элемент того же типа, что и массив. Использование классов, по понятным причинам, не допускается. Можно ли написать такой метод? Особенно, если учитывать, что в object можно поместить класс? И в object [] разные элементы могут иметь разный тип. И как проверить задан ли оператор "==" для сравнения двух элементов одного типа?
И еще один метод. На вход подается object, который может быть классом или структурой, стандартным типом (string, int, object) или массивом из элементов стандартного типа. Необходимо определить, к чему из вышеперечисленному объект относится?
0
|
|
28.06.2017, 20:33 | |
Ответы с готовыми решениями:
7
Как сделать разные типы возвращаемых значений в одном методе Как привести (состыковать) разные типы из разных классов (исп в качестве выходного параметра в методе) Как в обобщенном методе указать ограничения для конструктора? Преобразование типов в обобщенном методе |
![]() 1829 / 1337 / 427
Регистрация: 10.06.2011
Сообщений: 2,124
|
|
29.06.2017, 09:39 | 2 |
Здравствуйте, Alex_rt. Вы написали много текста по решению вашей проблемы. Но, к сожалению вы не написали, что это за проблема и какой цели вы хотите достичь.
Хотеть мало, нужно написать, зачем вы его хотите написать. Я думаю, что то, что вы пытаетесь сделать не является правильным решением. Однако ЧТО ИМЕННО вы хотите сделать и ЗАЧЕМ, остаётся непонятным. А без ответов на эти вопросы помочь вам будет сложно.
0
|
2 / 2 / 1
Регистрация: 12.01.2017
Сообщений: 36
|
|
29.06.2017, 10:52 [ТС] | 3 |
novikov.ea, да, вы правы.
Первый метод лучше разбить на два метода. В первом элемент массива и переменную переводить в string и тогда можно будет сравнивать, например "1" и 1.ToString(). А во втором методе лучше использовать T[] и V. Т.е. изначально типы будут разные, а потом проверять можно ли привести элемент массива к типу V, и если можно, тогда сравнивать. И все же, как ограничить типы входных переменных, например, T ob так что бы нельзя было туда передать класс, но можно было бы передавать элементы типа int, string, object ? А во втором методе, нужно определить к чему относится тип входной (T myOb) переменной: класс и структура, массив НЕ классов, одна переменная типа int, string, object и тд.
0
|
![]() 1829 / 1337 / 427
Регистрация: 10.06.2011
Сообщений: 2,124
|
|
29.06.2017, 12:13 | 4 |
Опять двадцать пять)
Ответьте, пожалуйста, на вопрос, используя шаблон: (Напишите, о чём вы думали до того, как решили написать какой-либо метод) Я решаю такую задачу: _________ (Вы решили, что вашу задачу можно решить с помощью некого метода. И решили написать его) Метод должен делать следующее: _________
1
|
1217 / 1005 / 259
Регистрация: 15.06.2012
Сообщений: 3,897
|
|
29.06.2017, 16:25 | 5 |
Возможно достаточно заюзать Equals (только не забывайте проверку на null)
Оно? Ограничения параметров типа (Руководство по программированию на C#) Можно без проблем получать индуское гражданство. По второму вопросу, сначала проверяйте, не является ли входной обьект массивом, если нет -- ваши проверки. Для массива гуглите как выдернуть тип.
1
|
2 / 2 / 1
Регистрация: 12.01.2017
Сообщений: 36
|
|
30.06.2017, 21:38 [ТС] | 6 |
Да! это то что нужно.
Итого, в качестве ограничения можно выбрать только: класс, структура, наличие конструктора без параметров и тд. И при помощи ограничения я не смогу ограничить так как хотелось бы(
0
|
1217 / 1005 / 259
Регистрация: 15.06.2012
Сообщений: 3,897
|
|
30.06.2017, 23:02 | 7 |
можно чуть подробней? Просто из описания выше, там перечислялись все структурные типы. Или нужно именно значемые, которые можно задавать в константах?
0
|
2 / 2 / 1
Регистрация: 12.01.2017
Сообщений: 36
|
||||||
02.07.2017, 23:58 [ТС] | 8 | |||||
Wolfdp, данную проверку я надеюсь использовать для разных методов, например, для использования рефлексии.
Итого нашел следующее решение:
0
|
02.07.2017, 23:58 | |
Помогаю со студенческими работами здесь
8
Разные типы Go и разные типы ОС
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |