Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
 Аватар для TomasMaple
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 47
1

Как передать в функцию аргумент по ссылке?

29.09.2020, 20:47. Показов 3288. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как привести этот код в адекватный вид?

Как передать значения ф-ций по ссылке?

Хотелось бы узнать зачем нужен static? Можно ли написать иначе? //я использовала static тк без него не работает( ̄▽ ̄* )

//задача программы звучит так: Найти f= (f(a)+f(b)) /f(c), где f(x), например f(5) = 1+2+3+4+5;
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    class Program
    {
        static void Main(string[] args)
        {
...
            Console.WriteLine($"Ответ: {Square(a, b, c)}");
            Console.ReadKey();
        }
        static public int FactSum(int n)
        {
            int result;
            if (n == 1) return 1;
            result = FactSum(n - 1) + n;
            return result;
        }
        static public double Square(int A, int B, int C)
        {
            int a, b, c;
 
            a = FactSum(A);
            b = FactSum(B);
            c = FactSum(C);
 
            return (a + b) / c;
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2020, 20:47
Ответы с готовыми решениями:

как передать аргумент по ссылке в JScript?
<% var v1, v2; v1 = new Number(); v2 = new Number(); test (v1, v2); Response.Write (v1 + '; ' + v2); function test(pv1,...

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

Как передать в функцию аргумент с арифметическим действием?
вот такой код: <?php $arr = ,,,,]; function e($num, $s) { foreach ($num as $value) { echo $value,$s,$value; }

10
Эксперт .NET
 Аватар для kolorotur
17805 / 12956 / 3381
Регистрация: 17.09.2011
Сообщений: 21,243
29.09.2020, 20:54 2
Лучший ответ Сообщение было отмечено TomasMaple как решение

Решение

Цитата Сообщение от TomasMaple Посмотреть сообщение
Как привести этот код в адекватный вид?
Дайте критерии адекватности.

Цитата Сообщение от TomasMaple Посмотреть сообщение
Как передать значения ф-ций по ссылке?
Добавив модификатор ref к параметрам.
Только зачем?

Цитата Сообщение от TomasMaple Посмотреть сообщение
зачем нужен static?
Чтобы метод можно было вызывать без создания экземпляра класса.
0
 Аватар для TomasMaple
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 47
29.09.2020, 21:03  [ТС] 3
C критериями сложнее - может быть есть у кого знания, как сделать такой код короче и эффективнее

А по поводу ссылки - если я правильно понимаю, то благодаря ней в аргументы ф-ций будет передаваться значение (а не создаваться новая ненужная локальная переменная)

...или я ошибаюсь?
0
627 / 391 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
29.09.2020, 21:07 4
Лучший ответ Сообщение было отмечено TomasMaple как решение

Решение

TomasMaple, в 24 строке у вас будет возвращаться целочисленное значение.
1
Эксперт .NET
 Аватар для kolorotur
17805 / 12956 / 3381
Регистрация: 17.09.2011
Сообщений: 21,243
29.09.2020, 21:08 5
Цитата Сообщение от TomasMaple Посмотреть сообщение
как сделать такой код короче и эффективнее
Краткость — не вседа хорошо. Зачастую даже наоборот.
А по поводу эффективности — метод FactSum может взорвать стек при слишком больших значениях n или при любых значениях n меньше единицы.

Цитата Сообщение от TomasMaple Посмотреть сообщение
благодаря ней в аргументы ф-ций будет передаваться значение
Будет передаваться переменная.
Значение у вас сейчас передается, без ref.
1
627 / 391 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
29.09.2020, 21:10 6
Цитата Сообщение от TomasMaple Посмотреть сообщение
а не создаваться новая ненужная локальная переменная
С чего вдруг она ненужная. На самом деле передачей по ссылке вы не сделаете никаких оптимизаций, и даже наоборот, можно таким образом навредить
0
 Аватар для TomasMaple
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 47
29.09.2020, 21:16  [ТС] 7
Значения переменных будут большие до 500... Лучше использовать for?

Добавлено через 1 минуту
На данный момент, к сожалению, переменной result ничего не присваивается
(вот тут)
C#
1
2
3
4
5
6
7
static public int FactSum(int n)
        {
            int result;
            if (n == 1) return 1;
            result = FactSum(n - 1) + n;
            return result;
        }
и я подумала, что ссылкой можно починить

Добавлено через 1 минуту
Pilarentes, а как можно навредить? Как указали выше - накроется стек?
0
Эксперт .NET
 Аватар для kolorotur
17805 / 12956 / 3381
Регистрация: 17.09.2011
Сообщений: 21,243
29.09.2020, 21:20 8
Цитата Сообщение от TomasMaple Посмотреть сообщение
до 500
Если до 500, то это ерунда, можете оставить рекурсию.
Только проверку исправьте, на случай если туда значение меньше единицы прилетит.

Цитата Сообщение от TomasMaple Посмотреть сообщение
переменной result ничего не присваивается
Если вы это определили по выводу в консоль нуля после завершения метода, то это не потому, что не присваивается, а потому, что у вас целочисленное деление, как выше верно подметили.
1 / 2 = 0
1
627 / 391 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
29.09.2020, 21:30 9
Лучший ответ Сообщение было отмечено TomasMaple как решение

Решение

Цитата Сообщение от TomasMaple Посмотреть сообщение
а как можно навредить?
Конкретно в вашем примере вреда большого не будет. Но ведь можно случайно поменять значение исходной переменной. Вообще передавать аргументы по ссылке нужно тогда, когда вы действительно в этом нуждаетесь. Вот эти оптимизации на спичках роли не сыграют
1
 Аватар для TomasMaple
0 / 0 / 0
Регистрация: 17.04.2020
Сообщений: 47
29.09.2020, 21:33  [ТС] 10
А можно пример необходимости использования ссылки?
0
627 / 391 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
29.09.2020, 21:40 11
TomasMaple, Вообще по ссылке и только по ссылке передаются все классы. И это нужно учитывать при написании приложений. Просто примите это за аксиому. Раньше чем вы разберетесь в ссылках, передавать целочисленные типы вам вряд-ли пригодится
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2020, 21:40
Помогаю со студенческими работами здесь

Как правильно передать уникальный аргумент в функцию
Здравствуйте! Помогите пожалуйста в решении такой проблемы: Есть структура, она должна хранить в себе строку, и уникальный символ. В...

Как передать аргумент в функцию при клике?
Всем привет. Есть такой код, который работает. Он выводит див в верхнем правом углу, в котором написано, что что-то не так. В общем,...

Можно ли передать функцию как аргумент другой функции?
mojno li v iazike C peredati functiiu kak argument drugoi functii. sori za angl. bukvi. mersi.

Передать аргумент argv не в main функцию как глобал
Здравствуйте!Мне нужно получить аргументы командной строки не для main() функции,передать вектор argv не в main(),а в другую...

Передать функцию как входной аргумент другой функции
Здравствуйте господа. Помогите пожалуйста, как в Матлабе функция задать как входной аргумент? К примеру: function = Dalamber(...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class - средства для работы с неизменяемыми структурами данных, каждое из которых предлагает свой уникальный подход к решению этой задачи. История их появления весьма. . .
Создание производительны­­х API с Java и gRPC
Wired 04.03.2025
В разработке производительность и масштабируемость микросервисных приложений играют ключевую роль. Традиционные REST API, несмотря на свою популярность и простоту, не всегда способны обеспечить. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 знаменует собой значительный скачок в развитии Java, внося фундаментальные улучшения в производительность, безопасность и удобство разработки. Релиз включает множество революционых изменений,. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Современная блокчейн-разработка на Java предоставляет разработчикам широкий спектр возможностей. В отличие от Solidity, который ограничен экосистемой Ethereum, Java позволяет создавать как. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru