0

Знаете я начал учить методы. И понял что Console.Write() это тоже метод, как и другие. Он ничего не возвращает (то есть, он void). А как создавались эти методы? Ведь они тоже являются методами. Я хочу видеть код метода Console.Write() или хотя бы объяснение, как они создавались.

iikuzmychov
  • 3,092
  • Если вам интересно, как оно исполняется процессором, следует изучать процессор. Покопайтесь в материалах по ассемблеру, узнайте что такое регистры, инструкции и т.д. и тогда вы наткнетесь на 2 инструкции процессора - call и ret, они и являются основой почти для любого метода. Какой при этом высокоуровневый язык используется - совершенно без разницы. Если не интересно, то я не понял вопроса. – aepot Aug 08 '22 at 23:02
  • Другими словами стандартный метод от нестандартного ничем не отличается. Есть метод, внутри код, ничего необычного. Некоторые методы внутри используют Windows API, некоторые используют друг друга. Но это асе те же методы, написанные так же как пишете вы. – aepot Aug 08 '22 at 23:09

1 Answers1

1

Есть две возможности:

  1. Можно взять вопрос про то, где посмотреть исходники NET, зарыться в них, и отыскать в них реализацию Console.Write()

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

Вообще же, по приведенной ссылке видно, что есть много реализаций Console.Write(), отличающихся типом аргумента (спасибо что ты есть, полиморфимзм!).

Если взять конкретную реализацию (к примеру, я посмотрел на реализацию Console.Write() для int32-аргумента, то есть для привычного нам целого числа), то мы увидим множество вложеннх вызовов, которые сводят всё сначала к Out.Write() и так далее, вплоть до метода, который делает Write() в буфер символов.

На мой взгляд, это не очень поучительный код. Гораздо интереснее, опять таки, на мой взгляд, посмотреть, как реализован, к примеру, оператор сравнения для строк.

  1. А можно научиться писать расширяющие методы, и с их помощью "расширять" набор стандартных функций своими, нестандартными.
S.H.
  • 11,065
  • 1
  • 24
  • 46
  • спасибо добрый человек. и спс не забил меня тапками – RankWhister Aug 08 '22 at 19:46
  • Тут тапки не в ходу, и есть намного более профессиональные отвечальщики, у которых весь мой ответ - это ттолько часть того, что они могу сказать на эту тему – S.H. Aug 08 '22 at 19:48
  • и еще вопрос. на каком языке был написан с# – RankWhister Aug 08 '22 at 19:48
  • "На каком языке" - это чуть чуть скользкий вопрос... дело в том, что C# - это лишь часть платформы. Самая "понятная" часть, которая включает в себя C# - это "runtime" - то, что может исполнять программы, и в частности, компилятор C# туда тоже входит. Вот здесь - https://github.com/dotnet/runtime - видно, что это на 83% сам C#, на 9% - C++ и на 7% - чистый C. – S.H. Aug 08 '22 at 19:54