Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342

Почему нету потери имен при компиляции C# приложения?

12.11.2013, 21:05. Показов 771. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, вопрос. Есть исходник, скомпилировали, декомпилировали - все имена, названия перменных и тд сохранились....
Зачем это нужно, умышленная потеря безопасности или в этом есть сакральный смысл?
Почему компилятор C# берет именно названия переменных и их, и использует в IL? Неужели нельзя сделать так, чтобы он подтирал не нужную информацию (да и оптимизация своего рода получится) о том, как названа переменная (ведь по сути это и не важно, да хоть lsjfoISDJFejls будет называться), без применения обфускатора?

Ведь получается, что если и используются эти имена, то производительность вот такой штуки:
C#
1
2
3
4
5
6
7
8
while(My_very_long_name_for_function_what_return_some_value_for_while_in_my_application1())
{
     dosomething();
}
while(My_very_long_name_for_function_what_return_some_value_for_while_in_my_application2())
{
     dosomething();dosomething();dosomething();
}
будет меньше, вот такой:
C#
1
2
3
4
5
6
7
8
while(f1())
{
     dosomething();
}
while(f2())
{
     dosomething();dosomething();dosomething();
}
,а если не используется....то зачем тогда сохранять оригинальное имя, если в процессе работы программы оно не будет использоваться? (память то лишняя ладно, но безопасность то страдает)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2013, 21:05
Ответы с готовыми решениями:

Ошибка компиляции при перемещении в иное пространство имён
Был у меня свой контрол: namespace Paint { partial class ColorDialogButton { /// <summary> ///...

почему нету конфликта при выборе шаблонной функции?
template <typename T> T Sqr(const T& t) { return t * t; } template <typename T> vector<T> Sqr(const vector<T>& v) { ...

Ошибка при компиляции приложения
Доброго времени суток! При попытке компиляции на IOS устройство вылетает следующая ошибка: E2597 ld: warning: directory not found for...

5
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
12.11.2013, 21:23
Имена локальных переменных не сохраняются. А имена параметров с 4-й версии .NET стали часть API метода (Параметры можно передавать в произвольном порядке с указанием имени). И поэтому компилятор не вправе их удалять.
0
Кактус
 Аватар для eocron
67 / 67 / 19
Регистрация: 23.05.2012
Сообщений: 342
12.11.2013, 21:45  [ТС]
А можете привести пример? Просто не совсем хорошо Вас понял. (точнее не понял)
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
12.11.2013, 23:35
Цитата Сообщение от eocron Посмотреть сообщение
А можете привести пример?
C#
1
2
3
4
5
6
7
8
void Foo(int integer, string text)
{
   Console.WriteLine("value of integer is {0}", integer);
   Console.WriteLine("value of text is '{1}'", text);
}
 
Foo(10, "Hello");
Foo(text: "Bye", integer: 25);
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.11.2013, 01:11
Цитата Сообщение от turbanoff Посмотреть сообщение
А имена параметров с 4-й версии .NET стали часть API метода (Параметры можно передавать в произвольном порядке с указанием имени). И поэтому компилятор не вправе их удалять.
разве это
C#
1
Foo(text: "Bye", integer: 25);
после компиляции не превратится в это
C#
1
Foo(10, "Hello");
?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
15.11.2013, 08:29
Jupiter, Вызов метода - превратится. Но сигнатура самого метода останется полной.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.11.2013, 08:29
Помогаю со студенческими работами здесь

ошибка при компиляции приложения
procedure Dialog(const captcha_sid: string); var MS: TMemoryStream; Jpg: TJPEGImage; begin Ms := TMemoryStream.Create; ...

Ошибка при компиляции приложения с AlphaControls
IDE - Embarcadero Rad Studio XE3 (XE2 - там аналогичная ситуация) Доброе время суток уважаемые форумчане. Уже несколько дней бьюсь с...

При компиляции приложения вылазиет ошибка
Написал код на с++ private: System::Void toolStripMenuItem2_Click(System::Object^ sender, System::EventArgs^ e) { ...

Ошибка при компиляции простого приложения
Здравствуйте, я работаю на Unity3D+Mono и не могу понять в чем ошибка, т.е я знаю что ошибка заключается в условии if т.к. Моно показывает...

Ошибка при компиляции Android приложения
Доброго времени суток. Эта ошибка выводится в полу Messages при компиляции. Вот она: Error: E0004 File does not exist:...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
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
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами 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/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru