Передача постоянного массива к функции в VB.NET

Оператор выбора является Вашим другом в этой ситуации и принимает одну из двух форм:

простой случай:

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>

можно даже поместить операторы выбора в порядок пунктом для действительно необычного упорядочивания.

5
задан Peter Mortensen 26 April 2016 в 14:29
поделиться

3 ответа

Еще одна вещь, о которой я только что подумал, не дает прямого ответа на вопрос, но, возможно, раскрывает намерения автора - ключевое слово 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")
2
ответ дан 14 December 2019 в 04:44
поделиться

Ближайшее, что вы можете сделать, это:

SomeFunction(New String() {"some", "array", "members"})

Это фактически идентично с точки зрения созданных объектов тому, что вы опубликовали. На самом деле в .NET нет литералов массива, только помощники для инициализации.

3
ответ дан 14 December 2019 в 04:44
поделиться

Нет; в CLI нет такого понятия, как постоянный массив; массивы всегда изменяемы. Возможно, подойдет ReadOnlyCollection ?

В C # (так предположительно похоже на VB) вы можете сделать что-то вроде:

private readonly static ReadOnlyCollection<string> fixedStrings
    = new ReadOnlyCollection<string>(
        new string[] { "apple", "banana", "tomato", "orange" });

Что дает статический (= общий) нередактируемый, многоразовая коллекция. Это особенно хорошо работает, если метод принимает IList , IEnumerable и т. Д. (А не массив, T [] ).

1
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: