Легкий с рекурсией.
public static string GetStandardExcelColumnName(int columnNumberOneBased)
{
int baseValue = Convert.ToInt32('A');
int columnNumberZeroBased = columnNumberOneBased - 1;
string ret = "";
if (columnNumberOneBased > 26)
{
ret = GetStandardExcelColumnName(columnNumberZeroBased / 26) ;
}
return ret + Convert.ToChar(baseValue + (columnNumberZeroBased % 26) );
}
Вы можете сделать это с помощью внедрения кода с атрибутами.
Другой вариант, позволяющий сэкономить время на кодирование, но все же дать вам большой контроль, - это использовать что-то вроде CuttingEdge .Условия . Это обеспечивает удобный интерфейс для проверки аргументов, так что вы можете написать:
name.Requires().IsNotNull();
См. Также C #: Как реализовать и использовать атрибуты NotNull и CanBeNull для получения дополнительной информации о контрактах кода, как они могут быть реализованы сегодня в VS2008 и как они будут быть интегрированным в VS2010.