Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
6 / 6 / 6
Регистрация: 02.01.2013
Сообщений: 32
1

Запретить изменять входные параметры в методе

09.01.2016, 15:23. Показов 2036. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, задался вопросом, а возможно ли запретить изменять входные параметры в методе? Запретить изменять поля класса можно добавив просто модификатор доступа ReadOnly, что касательно параметров метода? Возможно ли запретить их изменять чтобы ошибку выдало на этапе сборки проекта?
Ожидаемый результат:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    public class Class1
    {
 
        readonly private int _d = 0;
 
        public void F(List<string> _s, Class2 _c)
        {
            _s[0] = "0";  //Ошибка
            _s.Add("0");  //Ошибка
            _s.Remove("0");  //Ошибка
            _c._i = 1;  //Ошибка
        }
    }
P.S. Про ReadOnlyCollection я знаю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2016, 15:23
Ответы с готовыми решениями:

Входные параметры
Помогите за плюсик: использовать входные параметры функций со способом передачи данных “по...

Входные и выходные параметры функции
Здравствуйте! Пытаюсь разобраться в объявлении функции, подскажите пожалуйста, если у меня есть...

Не правильные параметры в методе.
Создал следующий метод: //сохраняем данные в файл public void...

Как запретить изменять размер формы по ширине?
Всем привет, как запретить изменять размер по ширине, и разрешить менять размер по длине?

6
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
09.01.2016, 17:03 2
Postal152, нет, нельзя.
1
0 / 0 / 1
Регистрация: 09.12.2018
Сообщений: 17
28.04.2021, 17:04 3
Можно, просто добавьте "in" перед параметром, таким образом вы не сможете его изменить внутри метода, а если попытаетесь - скомпилить не получится.

C#
1
2
3
4
5
6
7
8
9
Main()
{
    int a = 12;
    Method(in a);
}
Method(in int a)
{
    a = 3; //Не удается присвоить значение переменная "in int", так как это переменная только для чтения
}
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
28.04.2021, 18:51 4
Цитата Сообщение от mikitos813 Посмотреть сообщение
просто добавьте "in" перед параметром
Добавлю, что модификатор параметра in доступен в C# 7.2 и более поздних версиях.
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
28.04.2021, 18:56 5
Цитата Сообщение от OwenGlendower Посмотреть сообщение
нельзя
Цитата Сообщение от mikitos813 Посмотреть сообщение
Можно
И оба правы каждый в своё время.
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
28.04.2021, 19:12 6
Цитата Сообщение от mikitos813 Посмотреть сообщение
Можно, просто добавьте "in" перед параметром, таким образом вы не сможете его изменить внутри метода, а если попытаетесь - скомпилить не получится.
in никак не поможет при вызове методов класса, например Add/Remove в первом посте...
0
753 / 485 / 212
Регистрация: 05.04.2015
Сообщений: 2,013
28.04.2021, 20:25 7
mikitos813, Ух ты класс, спосибо. Пть лет ждал
0
28.04.2021, 20:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2021, 20:25
Помогаю со студенческими работами здесь

Входные параметры запроса
Нужно сделать запрос, по полям из формы. Но проблема в том, что если поле пустое, запрос не выводит...

Входные параметры с перечислением
Привет всем! Нужно сделать процедуру с входными параметрами , с такой задачей. Например: id дома...

Входные параметры NULL
Привет! В процедуре есть 4 входных параметра Id , которые могут быть NULL, и если NULL то тогда...

Входные и выходные параметры процедуры в IBExpert
Здравствуйте! Подскажите пожалуйста, куда входят входные параметры процедуры в IBExpert? И куда...


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

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