Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
to
19 / 19 / 2
Регистрация: 28.10.2010
Сообщений: 296

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

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

Студворк — интернет-сервис помощи студентам
есть некая функция, например:
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2011, 22:52
Ответы с готовыми решениями:

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

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

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

16
 Аватар для Питекантроп
251 / 145 / 21
Регистрация: 14.06.2010
Сообщений: 340
15.12.2011, 22:57
Цитата Сообщение от 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
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
15.12.2011, 22:58
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  [ТС]
Это все хорошо! Спасибо конечно, но это я знаю!
у меня функция так описана:
C#
1
public void func(params object[] arr)
Добавлено через 1 минуту
а если мне не нужно в main создавать массив типа object
По другому можно как-то?

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

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

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

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

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

Добавлено через 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
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
16.12.2011, 00:28
Цитата Сообщение от 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  [ТС]
параметры сами прикастятся к object (поскольку он их прародитель ).
ну это да!
но а как мне в эти же переменные записать результаты выполнения функции???
0
16.12.2011, 00:36

Не по теме:

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

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

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

Не по теме:

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

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

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

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

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

Добавлено через 23 часа 58 минут
Вопрост появился! Можно хоть как-то передать в мой метод класса ссылку на переменную, ели он обьявлен так:
C#
1
public void func(params object[] arr)
???
Может как-то так, если сделать каждую переменную отдельным обьектом некоторого класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2011, 01:38
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru