Я прошу прощения за дублирование некоторых данных в выбранном в данный момент ответе, но я хотел попытаться дать небольшое пояснение.
Сначала краткий ответ:
Мои рекомендации поиспользовать SqlChars против SqlString связано с вашим намерением.Если вы не планируете изменять входную строку, используйте SqlString.Если вам нужно манипулировать вводом, используйте SqlChars.
А теперь некоторые подробности о том, как я туда попал:
Из документации видно, что SqlChars является класс и SqlString - это структура .Класс против структуры выходит за рамки этого ответа, но достаточно сказать, что структуры имеют меньший вес.Вы также можете видеть, что SqlChars является изменяемым (вы можете изменить его, не требуя нового выделения памяти).Я не могу найти документацию, относящуюся к ограничению размера для SqlString, и у меня не было проблем с использованием данных, больших, чем VARCHAR (8000) / NVARCHAR (4000) с SqlString.Если у вас возникли проблемы, убедитесь, что в вашем коде CLR MaxByteSize = -1.
Приведенная ниже информация взята из документации MSDN Типы SQL *1022*.
Классы.
SqlChars - это изменяемый ссылочный тип, который переносит массив Char или экземпляр SqlString.
Структуры
SqlString - Представляет поток символов переменной длины для хранения или извлечения из базы данных.SqlString имеет базовую структуру данных, отличную от соответствующего типа данных .NET Framework String.