попробуйте это, если считаете, что OrderBy работает хорошо
yesno = yesno.OrderBy(sortColumnName + " " + sortDirection).ToList();
причина, по которой он не работает, - yesno.OrderBy (sortColumnName + "" + sortDirection) возвращает стиль массива и генерирует новый. [112 ]
это полностью отличается между сгенерированной единицей и yesno (которую вы определили)
Типы поддиапазона не на самом деле очень полезны на практике. Мы не часто выделяем массивы фиксированной длины, и нет также никакой причины фиксированных размерных целых чисел. Обычно, где мы действительно видим зафиксированные измеренные массивы, они действуют как перечисление, и у нас есть лучшее (хотя "более тяжелый") решение этого.
Типы поддиапазона также усложняют систему типов. Было бы намного более полезно ввести ограничения между переменными, чем к фиксированным постоянным.
(Обязательное упоминание, что целые числа должны быть произвольным размером на любом разумном языке.)
Java имел утверждать ключевое слово начиная с версии 1.4. При выполнении программирования согласно контракту Вы свободны использовать их для проверки надлежащего присвоения. И любой изменяемый атрибут в объекте, который должен находиться в пределах определенного диапазона, должен быть проверен до того, чтобы быть установленным. Можно также бросить IllegalArgumentException.
Почему никакой тип диапазона? Мое предположение - то, что исходные разработчики не видели один в C++ и не рассматривали это как важное как другие функции, в которых они пытались разобраться.
Диапазоны являются самыми полезными, когда можно сделать что-то по тому диапазону, кратко. Это означает закрытия. Для Java и C++, по крайней мере, тип диапазона был бы раздражающим по сравнению с итератором, потому что необходимо будет определить внутренний класс для определения то, что Вы собираетесь сделать по тому диапазону.
В C# можно сделать это:
foreach(int i in System.Linq.Enumerable.Range(0, 10))
{
// Do something
}
Паскаль (и также Delphi) использует тип поддиапазона, но он ограничен перечислимыми типами (целое число, символ и даже булевская переменная).
Это - прежде всего, целое число с дополнительной проверкой типа. Можно фальсифицировать это на другом языке с помощью класса. Это дает преимущество, что можно применить более сложные диапазоны.
Для C++ lib для ограниченных переменных значений в настоящее время реализуется и будет предложен в библиотеках повышения: http://student.agh.edu.pl/~kawulak/constrained_value/index.html
C++ позволяет Вам реализовывать такие типы через шаблоны, и я думаю, что уже существует несколько библиотек доступное выполнение этого. Однако я думаю в большинстве случаев, преимущество является слишком небольшим для выравнивания по ширине добавленной сложности и штрафа скорости компиляции.
Что касается помех утверждают, они уже существуют. Повышение имеет a BOOST_STATIC_ASSERT
, и в Windows, я думаю, что библиотека ATL Microsoft определяет подобный.
boost::type_traits
и повышение:: mpl являются, вероятно, Вашими лучшими друзьями в реализации чего-то вроде этого.
Гибкость к самокрутке лучше, чем встраивание его на язык. Что, если Вы хотите насыщать арифметику, например, вместо того, чтобы выдать исключение для из значений диапазона? Т.е.
MyRange<0,100> volume = 99;
volume += 10; // results in volume==100
Я добавил бы к ответу Tom Hawtin (на который я соглашаюсь), что для C++ существование диапазонов не подразумевало бы, что они будут проверены - если Вы захотите быть последовательными к общему поведению языка - поскольку доступы к массиву, например, также не проверяются в диапазоне так или иначе. Для C# и Java, я полагаю, что решение было основано на производительности - чтобы проверить, что диапазоны наложат нагрузку и усложнят компилятор.
Заметьте, что диапазоны главным образом полезны в течение фазы отладки - нарушение диапазона никогда не должно происходить в производственном коде (теоретически). Таким образом, проверки принадлежности к диапазону лучше, чтобы быть реализованными не в самом языке, но в пред - и пост - условия, какая банка (должна) быть разделена при создании сборки конечных версий.
JSR-305 оказывает некоторую поддержку для диапазонов, но я не знаю когда, если когда-нибудь это будет частью Java.
Это старый вопрос, но просто хотел обновить его. В Java нет диапазонов как таковых, но если вам действительно нужна функция, вы можете использовать Commons Lang , который имеет ряд классов диапазонов, включая IntRange :
IntRange ir = new IntRange(1, 10);
Как ни странно, это не существует в Commons Math. Я частично согласен с принятым ответом, но я не считаю, что диапазоны бесполезны, особенно в тестовых случаях.