Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668

Как посмотреть реализацию методов внутри CLR

05.11.2012, 14:55. Показов 3984. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Некоторые методы позначенные как [MethodImpl(MethodImplOptions.InternalCal l)].
Значит что реализованны внутри среды CLR.
Как увидеть их реализацию?

Это значит что они написанные MSIL кодом?

Есть еще какие-то атрибуты которые так же скрывают код?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2012, 14:55
Ответы с готовыми решениями:

Как посмотреть стандартную реализацию списка
Собственно вопрос - как посмотреть стандартную реализацию класса списка (List(Of T)), его методов, и так далее? Спасибо.

Как посмотреть реализацию функций STL?
Доброго времени суток. Вопрос возник в процессе выполнения упражнений из книги "Язык программирования C++" Страуструпа. Он...

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

4
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8728 / 3680 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
05.11.2012, 15:44
Цитата Сообщение от Noob.net Посмотреть сообщение
Как увидеть их реализацию?
Найти исходник CLR. (подсказка SSCLI)
Цитата Сообщение от Noob.net Посмотреть сообщение
Это значит что они написанные MSIL кодом?
Нет, это нативный код.
Цитата Сообщение от Noob.net Посмотреть сообщение
Есть еще какие-то атрибуты которые так же скрывают код?
Есть MethodImplOptions.ForwardRef, но использовать его скорее всего получится только в C++/CLI, по крайней мере в C# у меня не получилось, да и не было еще в этом необходимости.
1
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
05.11.2012, 19:06  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
Найти исходник CLR. (подсказка SSCLI)
Значит весь CLR работает на чистом С и частично С++ ?

Добавлено через 10 минут
Вот например Number.FormatInt32 - везде только ссылки на метод.. а реализации не могу найти.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8728 / 3680 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
05.11.2012, 19:14
C++ там большая часть, C очень мало. Если основываться на расширении файлов (т.к. все исходники изучать у меня нет необходимости/желания), то CLR реализована полностью на C++.
Цитата Сообщение от Noob.net Посмотреть сообщение
Number.FormatInt32
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
FCIMPL3(Object*, COMNumber::FormatInt32, INT32 value, StringObject* formatUNSAFE, NumberFormatInfo* numfmtUNSAFE)
{
    CONTRACTL
    {
        MODE_COOPERATIVE;
        DISABLED(GC_TRIGGERS);  // can't use this in an FCALL because we're in forbid gc mode until we setup a H_M_F.
        THROWS;
        SO_TOLERANT;
    }
    CONTRACTL_END;
 
    wchar fmt;
    int digits;
 
    struct _gc
    {
        STRINGREF   refFormat;
        NUMFMTREF   refNumFmt;
        STRINGREF   refRetString;
    } gc;
 
    gc.refFormat    = (STRINGREF)formatUNSAFE;
    gc.refNumFmt    = (NUMFMTREF)numfmtUNSAFE;
    gc.refRetString = NULL;
 
    HELPER_METHOD_FRAME_BEGIN_RET_ATTRIB_PROTECT(Frame::FRAME_ATTR_RETURNOBJ, gc);
 
 
    if (gc.refNumFmt == 0) COMPlusThrowArgumentNull(L"NumberFormatInfo");
    fmt = ParseFormatSpecifier(gc.refFormat, &digits);
 
    //ANDing fmt with FFDF has the effect of uppercasing the character because
    //we've removed the bit that marks lower-case.
    switch (fmt & 0xFFDF) {
    case 'G':
        if (digits > 0)
        {
            NUMBER number;
            Int32ToNumber(value, &number);
            if (fmt != 0) {
                gc.refRetString = NumberToString(&number, fmt, digits, gc.refNumFmt);
                break;
            }
            gc.refRetString = NumberToStringFormat(&number, gc.refFormat, gc.refNumFmt);
            break;
        }
        // fall through
    case 'D':
        gc.refRetString = Int32ToDecStr(value, digits, gc.refNumFmt->sNegative);
        break;
    case 'X':
        gc.refRetString = Int32ToHexStr(value, fmt - ('X' - 'A' + 10), digits);
        break;
    default:
    NUMBER number;
    Int32ToNumber(value, &number);
    if (fmt != 0) {
      gc.refRetString = NumberToString(&number, fmt, digits, gc.refNumFmt);
      break;
    }
    gc.refRetString = NumberToStringFormat(&number, gc.refFormat, gc.refNumFmt);
    break;
 
    }
 
    HELPER_METHOD_FRAME_END();
 
    return OBJECTREFToObject(gc.refRetString);
}
FCIMPLEND
1
Темная сторона .Net
 Аватар для Noob.net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
05.11.2012, 19:18  [ТС]
Большое спасибо.Пойду рыться в учебниках по С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2012, 19:18
Помогаю со студенческими работами здесь

Как вынести реализацию методов шаблонного класса в отдельный файл?
Как вынести реализацию методов шаблонного класса в отдельный файл, описание шаблонного класса в .h а реализацию хотелось бы сделать в...

F12. Можно ли как то увидеть реализацию методов в классах, а не просто описание
при нажатии f12 мы переходим в класс на котором стоял указатель, допустим system.io или любой другой апишный класс, так вот можно ли как...

Возможно ли посмотреть реализацию библиотечной функции?
Здравствуйте. Возможно ли просмотреть реализацию библиотечной функции,если да,то как? с++(MSVS 2013);

Где в лотусе можно посмотреть реализацию компонентов.
Можно ли посмотреть код реализации лотусовых компонентов (Notes mail view и т.д)

Хочу посмотреть реализацию класса Router в соц. сетях
Добрый день! Хотел бы увидеть простой, но без косяков код Router для сайтов типа соц. сетей. Где реализовано вот такое: host.ru/<Имя...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru