Оператор выбора является Вашим другом в этой ситуации и принимает одну из двух форм:
простой случай:
SELECT CASE <variable> WHEN <value> THEN <returnvalue>
WHEN <othervalue> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
расширенный случай:
SELECT CASE WHEN <test> THEN <returnvalue>
WHEN <othertest> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
можно даже поместить операторы выбора в порядок пунктом для действительно необычного упорядочивания.
Еще одна вещь, о которой я только что подумал, не дает прямого ответа на вопрос, но, возможно, раскрывает намерения автора - ключевое слово ParamArray. Если вы управляете функцией, которую вызываете, это может значительно упростить жизнь.
Public Function MyFunction(ByVal ParamArray p as String())
' p is a normal array in here
End Function
' This is a valid call
MyFunction(New String() {"a", "b", "c", "d"})
' So is this
MyFunction("a", "b", "c", "d")
Ближайшее, что вы можете сделать, это:
SomeFunction(New String() {"some", "array", "members"})
Это фактически идентично с точки зрения созданных объектов тому, что вы опубликовали. На самом деле в .NET нет литералов массива, только помощники для инициализации.
Нет; в CLI нет такого понятия, как постоянный массив; массивы всегда изменяемы. Возможно, подойдет ReadOnlyCollection
?
В C # (так предположительно похоже на VB) вы можете сделать что-то вроде:
private readonly static ReadOnlyCollection<string> fixedStrings
= new ReadOnlyCollection<string>(
new string[] { "apple", "banana", "tomato", "orange" });
Что дает статический (= общий) нередактируемый, многоразовая коллекция. Это особенно хорошо работает, если метод принимает IList
, IEnumerable
и т. Д. (А не массив, T []
).