Я действительно склонен использовать статические классы для фабрик. Например, это - регистрирующийся класс в одном из моих проектов:
public static class Log
{
private static readonly ILoggerFactory _loggerFactory =
IoC.Resolve<ILoggerFactory>();
public static ILogger For<T>(T instance)
{
return For(typeof(T));
}
public static ILogger For(Type type)
{
return _loggerFactory.GetLoggerFor(type);
}
}
Вы, возможно, даже заметили, что МОК называют со статическим средством доступа. Большинство из времени для меня, если можно назвать статические методы для класса, это - все, что можно сделать так, я отмечаю класс как статичный для дополнительной ясности.
Да, это именно то, что вы должны сделать. Если вы хотите просто получить количество символов без пробелов, вы должны использовать функцию LEN ()
, а во всех остальных случаях DATALENGTH ()
.
Even LEN () В документации
есть информация о том, что для получения количества байтов для представления расширения вы должны использовать DATALENGTH ()
Вот ссылки на документы MSDN:
Будьте осторожны. DATALENGTH возвращает количество использованных байтов, а не количество символов.
len подсчитывает количество используемых символов, а не необходимое хранилище, это станет еще более очевидным, если вы используете nvarchar вместо varchar
len также не считает конечные пробелы
, посмотрите на это
declare @v nchar(5)
select @v ='ABC '
select len(@v),datalength(@v)
и вывод для len - 3, а вывод для datalength = 10