2017-01-02 8 views
0

Я пытаюсь создать консольную программу на C#, которая не зависит от использования System или любых других библиотек, которая включает в себя Console.WriteLine();. Я делаю SDK, написанный на C# (почти как то, что делает Unity 3D). Однако я не знаю, как сделать пользовательский текстовый принтер. Я не нашел статей в Интернете или вопросов Stackoverflow, связанных с тем, что я хочу сделать. Должно быть так или иначе, или Console.WriteLine(); не существует.Как отобразить текст без Console.WriteLine() в C#

Вот мой код до сих пор, но я не знаю, сколько это поможет:

public static class GPrint 
{ 
    public static void Print(string str) 
    { 



    } 
} 

я исследовал почти все очевидном вещи, как string.something() и str.something(), но там, кажется, ничего не связано с печатью строки на экране.

Есть ли способ сделать простой клон Console.WriteLine() без использования предоставленного System пространства имен?

Заранее благодарен!

+5

Просто из любопытства, зачем вам это нужно? – Mahdi

+2

Я действительно не понимаю, почему вы хотели бы это сделать, потому что класс 'Console' содержится в' mscorlib.dll', который в основном включен в любое консольное приложение. Класс 'String' также находится в' mscorlib'. ('string' - это просто псевдоним для' System.String'.) Поэтому, если вы не хотите использовать 'System', вы также не можете использовать' string.Something() '. Другими словами: без использования 'mscorlib' вы даже не можете делать простейшие вещи. – haindl

+0

Создайте форму Windows или Wpf с одним большим многострочным текстовым полем и распечатайте его там без 'Console.WriteLine'. – Fabio

ответ

4

System.Console, абстракция свыше stdin/stdout так присуща процессам, которые команда .NET решила включить в common object runtime library (mscorlib).

Другими словами, позволяя процессу получать ввод и выдавать выходные данные по стандартным потокам, настолько укоренен в среду выполнения и в библиотеку базового класса, что это невозможно или, по крайней мере, невозможно, иметь один без другого ,

Это не похоже на то, что вы можете запускать консольное приложение .NET, вообще не загружая .NET Framework, просто потому, что вы не используете System.Console или любой другой класс из пространства имен System.

ответ Смотрите также похожие на Ганса в Is mscorlib.dll/mscoree.dll loaded when .NET application runs:

Технически это возможно, чтобы не получить mscorlib.dll загружены [...] Практически работает, что только если вы предоставите заменителя

Если вы вообще не хотите опускать mscorlib, но на самом деле просто любопытно писать на консоль, не используя System.Console, см. MSDN: Console Functions. Вам придется использовать Platform Invoke. Это будет стоить дорого: ваше приложение будет работать только в Windows, если только платформа, на которой вы работаете, заменяет соответствующие DLL.

+2

Ha! Ты подтолкнул меня на это. Он по сути спрашивает, как написать программу C# без использования .NET Framework. Весь смысл использования языка более высокого уровня IS не должен писать код нижнего уровня. – JuanR

+0

Спасибо за подробный ответ! Это помогло! – Kivitoe

Смежные вопросы