Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 09:36   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос Как массив передать в качестве аргумента функции

Решил использовать для создания массива целых чисел(Int32) стандартный класс языка C# Array(надоело использовать в C# синтаксис языка C++). Теперь необходимо написать арифметическую функцию, аргументом которой будет данный класс, но C# позволяет в параметре функции определить Array только как массив элементов класса Object и соответственно для выполнения требуемых арифметических операций требуется применение функции Convert.ToInt32. Вообщем пишу что-то на подобии следующего кода:
Код:
Array myArray = Array.CreateInstance(typeof(Int32), 3, 3);
//...
public Int32 My(Array A)
        {
            return A.GetValue(0, 0);
        }
и на выделенной строчке получаю ошибку.
Смотрел MSDN по поводу того, каким образом передать массив класса Array в качестве аргумента функции, но там рассматривается только передача в качестве аргументов массивов, написанных "синтаксисом C++"(Int32[,] myArray).
Подскажите пожалуйста, как в качестве аргумента функции передать целочисленный массив класса Array?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.

Последний раз редактировалось Mixim; 10.03.2011 в 09:04.
Mixim вне форума Ответить с цитированием
Старый 09.03.2011, 12:08   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Хех:
Код:
class MyClass
{
       public void MyFunc(int[] Arr)
       {
           for (int i = 0;i<Arr.Length;i++)
           {
                // Ваши действия
           }
        }
}
_-Re@l-_ вне форума Ответить с цитированием
Старый 09.03.2011, 12:11   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

_-Re@l-_, в том то и прикол что ТС не устраивает такой вариант.

учитывая что С# произошел от С++, и этот вариант официально включен в шарп, ТС почему то считает что это С++.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2011, 13:18   #4
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

вот почитай http://msdn.microsoft.com/ru-ru/libr...=vs.90%29.aspx тут подробно все расписано
wm_leviathan вне форума Ответить с цитированием
Старый 09.03.2011, 13:24   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да блин, прежде чем отвечать может стоит прочесть внимательно вопрос?
я думал что должно работать чтото типа такого:
Код:
void My(Array<Int32> ar)
но компиль меня послал.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2011, 15:35   #6
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

ТС видимо что-то попутал
Код:
Int32[,] myArray
Это синтаксис с# и не имеет никакого отношения к с++
m0nax вне форума Ответить с цитированием
Старый 10.03.2011, 08:55   #7
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Подмигивание

Цитата:
Сообщение от wm_leviathan Посмотреть сообщение
вот почитай http://msdn.microsoft.com/ru-ru/libr...=vs.90%29.aspx тут подробно все расписано
Я же писал:
Цитата:
Смотрел MSDN по поводу того, каким образом передать массив класса Array в качестве аргумента функции, но там рассматривается только передача в качестве аргументов массивов, написанных "синтаксисом C++"(Int32[,] myArray).
Вообще какой-то бред... Получается, что мелкософтовцы создали класс, который ни как не передашь в качестве параметра функции, а это "есть нехорошо". Посмотрел ни одну, ни две и даже ни три страницы с MSDN, посвященных этому вопросу, но там везде используется "голый синтаксис C++"! А они еще называют C# полностью самостоятельным, независимым языком.
Ладно, я бы понял, если бы метод CreateInstance имел перегрузку, в которой аргументом служил бы массив(был бы сделан аналог конструктора копирования), но ведь этого нет.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
void My(Array<Int32> ar)
но компиль меня послал.
По сути, Array - это есть шаблон, а еще со времен C++ конкретный тип параметров шаблона задавался с помощью "<type>", но... Короче, также был отправлен компилятором к черту
Буквально на прошлой неделе, по-моему на том же MSDN, читал статью о том, что использование класса Array - это более качественное и грамотное решение, что нужно избавляться от синтаксиса C++ и т.д., но видимо как всегда применимо одно выражение:"...если бы ни одно НО"
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.

Последний раз редактировалось Mixim; 10.03.2011 в 09:03.
Mixim вне форума Ответить с цитированием
Старый 10.03.2011, 09:53   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так, для начала, кто вам сказал что это синтаксис C++?
C# произошел от C++, потому и наследует его части синтаксиса, и эти части входят в C#.
Цитата:
по-моему на том же MSDN, читал статью о том
можно ссылочку на статью? если есть возможность то на оригинал на англе.

да кстати, открою секрет.
по сути
Код:
void My(int[] ar)
==
Код:
void My(Array<Int32> ar)
так что полет нормальный.
и это синтаксис шарпа.
Цитата:
Array - это есть шаблон, а еще со времен C++ конкретный тип параметров шаблона задавался с помощью "<type>"
вы так дичитесь С++, и в тоже время называете Array шаблоном.
нет это не шаблон, это генерик.
в шарпе оно иначе называется, и реализовано совсем иначе по сравнению с плюсами.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача object в качестве аргумента moknomo Microsoft Office Excel 3 14.12.2010 09:35
16. Нарисовать точечный график функции . Диапазон изменения аргумента: от 15 до 5, шаг аргумента – 0,1. dzuga Паскаль, Turbo Pascal, PascalABC.NET 1 09.06.2010 06:12
16. Нарисовать точечный график функции . Диапазон изменения аргумента: от 15 до 5, шаг аргумента – 0,1. dzuga Помощь студентам 6 08.06.2010 17:19
можно ли в качестве аргумента функции использовать имя текстового файла Arassir Общие вопросы Delphi 2 31.05.2010 23:12
Как можно передать переменную типа struct в качестве входных параметров функции kitty19 Помощь студентам 1 15.12.2009 17:43