Так же к некоторым из других ответов, я никогда не сделал, чтобы кандидат попросил видеть наш код. Даже если они сделали я имею очень стараться сделать так и скорее всего не был бы. Как упоминания Swati, в значительной степени любая нетривиальная система будет иметь разделы, которые выглядят хорошими поэтому даже наблюдение, что код не поможет так многому.
Лучше, чем рассмотрение фактического кода Тест Joel . В основном это - 12 вопросов "да" или "нет", что можно спросить работодателя. Чем больше да отвечают, тем лучше рабочая среда, как ожидают, будет. Это - очевидно, не надежное "правило", но это, казалось бы, указало бы на те компании, которые берут код (и кодеры ) серьезно.
Вы можете передать StringBuilder
как char *
.
Посмотрите http://pinvoke.net , чтобы проверить, нет ли там подписи для функции.
Это зависит от того, что вы хотите сделать. Когда вы вызываете функцию Win32 через PInvoke, вы должны иметь возможность просто передать переменную String; структура упорядочивает все за вас. Если вам нужно что-то более сложное, посмотрите Marshal.StringToHGlobalAnsi и другие методы класса Marshal
.
Вы можете получить массив byte [] из строки, используя Encoding.ASCII.GetBytes. Вероятно, это можно преобразовать в char * с помощью фиксированного оператора в C #. (Это закрепляет выделенную память, не позволяя gc перемещать ее - тогда вы можете создать на нее указатель.)
Так что мой ответ - да, только если вам удастся преобразовать байт * в char *. (в C / C ++ это не будет проблемой, но я не уверен насчет C #)
PS> Я опубликую код позже, если найду закладку к статье об этом. Я знаю, что это где-то есть ..
Чтобы объединить 2 уже заданных ответа, это зависит от направления, которое вам нужно для вашего параметра.
Если функции нужна только входная строка, то есть const char *
, вы можете использовать аргумент типа System.String
(или обычную строку
).
Если функция заполняет строку, то есть char * buffer, int bufferSize
, вы можете передать System.Text.StringBuilder
.
В обоих случаях (авто- ) Маршалинг сделает за вас необходимые преобразования.