to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
1

Возвратить данные из функции, которая имеет заранее неизвестное количество входных параметров

15.12.2011, 22:52. Показов 3153. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть некая функция, например:
C#
1
2
3
4
5
6
7
8
9
public void func(params object[] arr)
{
что-то делается
}
 
в main так:
func(a,b,c);
или 
func(a,v,c,b,n);
Как вернуть в эти же задаваемые входные значения выходные параметры???

Добавлено через 19 минут
Народ хоть примерно в какую сторону копать?
пробовал передачу по ссылке но выбивает ошибку!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2011, 22:52
Ответы с готовыми решениями:

Как передать в функцию заранее неизвестное число параметров?
как передать в функцию "func" разное число параметров? писать для каждого перегрузку, или можно...

Неизвестное заранее количество id
Здравствуйте. Есть генерируемая форма с неизвестным количеством поле вода. В данном случае <input...

Cоздание неизвестное заранее количество переменных
Здравствуйте. Как осуществить создание неизвестное заранее количество переменных? Например...

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

16
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
15.12.2011, 22:57 2
Цитата Сообщение от to Посмотреть сообщение
Как вернуть в эти же задаваемые входные значения выходные параметры???
C#
1
2
3
4
5
6
7
8
9
10
void func(ref int x)
{
    .....
}
 
void Main()
{
     int a = 1;
     func(ref a);
}
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
15.12.2011, 22:58 3
1. В main пишем:
C#
1
2
object[] arr = new object[n];
func(arr);
2. Создаем функцию:
C#
1
2
3
4
public void func(object[] arr)
{
   // Изменяем arr как надо.
}
3. ...
4. PROFIT!
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
15.12.2011, 23:01  [ТС] 4
Это все хорошо! Спасибо конечно, но это я знаю!
у меня функция так описана:
C#
1
public void func(params object[] arr)
Добавлено через 1 минуту
а если мне не нужно в main создавать массив типа object
По другому можно как-то?

Добавлено через 47 секунд
У меня просто в задании нужно сделать функцию fscanf на c#
и я могу ввести как одну переменную так и 10)
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
15.12.2011, 23:02 5
Цитата Сообщение от to Посмотреть сообщение
По другому можно как-то?
Список можно создать.

Цитата Сообщение от to Посмотреть сообщение
у меня функция так описана:
Тогда никак.

Цитата Сообщение от to Посмотреть сообщение
У меня просто в задании нужно сделать функцию fscanf на c#
и я могу ввести как одну переменную так и 10)
На C# есть необязательные параметры в методе.
Или перегрузить несколько раз функцию.
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
15.12.2011, 23:24  [ТС] 6
Что вооще ни как??
может есть какой-то обход??

Добавлено через 11 минут
На C# есть необязательные параметры в методе.
А как же мне тогда предусмотреть все варианты?
если человек захочет вызвать
C#
1
fscanf("%d %f %f %s", a,b,c,d)
Идентификаторы такие как %d, %f, %s могут быть вызваны в любом порядке.

Добавлено через 30 секунд
Что же мне предусматривать все варианты ввода?
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
15.12.2011, 23:34 7
Цитата Сообщение от to Посмотреть сообщение
Что же мне предусматривать все варианты ввода?
Сделай перегрузку метода для всех случаев, мелкомягкие так и делают в своих библиотеках.
1
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
15.12.2011, 23:54  [ТС] 8
Сделай перегрузку метода для всех случаев, мелкомягкие так и делают в своих библиотеках.
Блин,! Так не хочется перегружать!
Спасибо за помощь!

Добавлено через 8 минут
А еще такой вопрос!
А если через необязательные параметры функции, будет иметь вид:
C#
1
public void fscanf(string param, int a=0,double b=0, string c="", int d=0, string e="")
но если я ввиду 2 параметром не int-овскую переменную а переменную другого типа, то вызовет ошибку?

Добавлено через 6 минут
Может есть другой способ? у меня уже весь код готов, просто функция не возвращает из массива типа object данные!
0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
16.12.2011, 00:28 9
Цитата Сообщение от to Посмотреть сообщение
1
public void func(params object[] arr)
Цитата Сообщение от to Посмотреть сообщение
а если мне не нужно в main создавать массив типа object
тут вы не будете создавать массив а просто вызовете функцию с несколькикми параметрами:

C#
1
2
3
4
5
int a=0;
float b=0.2f;
double c=0.2d;
 
func(a,b,c);
параметры сами прикастятся к object (поскольку он их прародитель ).

Добавлено через 47 секунд
Цитата Сообщение от Blood-Angel Посмотреть сообщение
Сделай перегрузку метода для всех случаев, мелкомягкие так и делают в своих библиотеках.

Не по теме:

вы бы лутше сначала разобрались в сути вопроса! какие наф перегрузки если количество входных параметров неизвестно?

0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
16.12.2011, 00:30  [ТС] 10
параметры сами прикастятся к object (поскольку он их прародитель ).
ну это да!
но а как мне в эти же переменные записать результаты выполнения функции???
0
I2um1
16.12.2011, 00:36
  #11

Не по теме:

Цитата Сообщение от Alligieri Посмотреть сообщение
вы бы лутше сначала разобрались в сути вопроса! какие наф перегрузки если количество входных параметров неизвестно?
неадекватная реакция на неадекватную архитектуру, сколько писал кода, никогда не было надобности в таком костыле. да и суть перегрузки как в раз в том.

0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
16.12.2011, 00:38 12
Цитата Сообщение от to Посмотреть сообщение
но а как мне в эти же переменные записать результаты выполнения функции???
ну тогда только void func(ref object[] param) и руцями набить параметры в массив, проитерировать в методе и записать результаты

Добавлено через 1 минуту
Цитата Сообщение от Blood-Angel Посмотреть сообщение
неадекватная реакция на неадекватную архитектуру, сколько писал кода, никогда не было надобности в таком костыле.

Не по теме:

вы еще костылей не видели:D хотя задача тупорылая - переносить с процедурного подхода в ООП функции, тут согласен

0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
16.12.2011, 01:15  [ТС] 13
не совсем тупорылая) потому как это не просто функция а метод класса)
Так что принципы ООП она не нарушает!

Добавлено через 9 минут
А если я объявлю массив типа object в классе, и потом в этот массив буду скидывать результат выполнения функции, а еще одним методом просто буду перезаписывать из этого массива в нужные мне переменные!
Вот только хотелось ришение этой задачи одним методом! Но походу не получитсья!
0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
16.12.2011, 01:19 14
Цитата Сообщение от to Посмотреть сообщение
А если я объявлю массив типа object в классе, и потом в этот массив буду скидывать результат выполнения функции, а еще одним методом просто буду перезаписывать из этого массива в нужные мне переменные!
Вот только хотелось ришение этой задачи одним методом! Но походу не получитсья!
хочу я увидеть то что вы написали, ато не уловил логики
Цитата Сообщение от to Посмотреть сообщение
не совсем тупорылая) потому как это не просто функция а метод класса)
fscanf - метод класса? какого если не секрет?
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
16.12.2011, 01:29  [ТС] 15
fscanf - метод класса? какого если не секрет?
вот так:
class myClass
{
public void fscanf( params object[] arr)
{
//нужные операторы
}
}
Добавлено через 3 минуты
хочу я увидеть то что вы написали, ато не уловил логики
не получиться! хорошо подумал тоже самое получаеться)
0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
16.12.2011, 01:30 16
to, я имел ввиду что в С - это функция, потому тупорыло переводить ее в C# с требованиями сохранения сигнатуры при явном изменении парадигмы (подхода) (С - процедурный ЯП, C# - "чистый" ОО)
0
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296
17.12.2011, 01:38  [ТС] 17
Тупорыло! я с вами согласен! но такое задание у меня на идз!
Преподу походу было лень придумывать задания вот он и дал что в голову пришло)

Что в моей ситуации можно сделать? не подскажите?

Добавлено через 6 минут
Я так понимаю) Я могу только сделать так, добавить массив типа object в свой класс, и потом просто в функции заполнять этой массив. А в самой ф. main в цикле просто копировать в нужные переменные нужные данные!
По другому это наверное реализовать нельзя!

Добавлено через 23 часа 58 минут
Вопрост появился! Можно хоть как-то передать в мой метод класса ссылку на переменную, ели он обьявлен так:
C#
1
public void func(params object[] arr)
???
Может как-то так, если сделать каждую переменную отдельным обьектом некоторого класса?
0
17.12.2011, 01:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2011, 01:38
Помогаю со студенческими работами здесь

Как инициализировать заранее неизвестное количество компонентов?
Всем привет. Собственно возник вопрос: как, используя WindowsForms создать на форме заранее не...

Выполнить заранее неизвестное количество запросов с параметром
Добрый день. Есть такой вопрос. Допустим, по определенному условию я удалил из таблицы энное число...

Как принять заранее неизвестное количество аргументов и передать их в конструктор?
Допустим есть функция которая создает объект template<typename T> T* createObject(typename...

Неизвестное количество параметров
Такая проблема: Есть функция 1 void myFunc1(params object list) { int i = 0, last; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru