Что действительно “Смещается: =”, означают в этом коде VB6?

Для этого вы можете использовать System.Linq.GroupBy с небольшой модификацией, чтобы добавить ключ в виде числа «и», предшествующего данному слову.

Групповой метод:

static string[][] GroupByWord(string[] input, string word)
    {
        var i = 0;
        return input.GroupBy(w =>
        {
            if (w == word)
            {
                i++;
                return -1;
            }
            return i;
        })
        .Where(kv => kv.Key != -1) // remove group with "and" strings
        .Select(s => s.ToArray()) // make arrays from groups ["visit", "houston"] for example
        .ToArray(); // make arrays of arrays
    }

Метод вызова:

        var input = new[] { "visit", "houston", "and", "san", "antonio", "and", "austin", "and", "corpus", "christi" };
        var result = GroupByWord(input, "and");
5
задан Keng 23 October 2008 в 00:45
поделиться

4 ответа

Это - синтаксис Visual Basic для дополнительных именованных параметров. Insert функции назвали параметр Shift, который указывается.

C#, насколько я знаю, не имеет эквивалента для дополнительных именованных параметров. Вместо этого необходимо было бы звонить Insert метод, указывая Type.Missing для всех параметров кроме Shift.

См. также следующий вопрос о StackOverflow: VB.NET: = Оператор

ОБНОВЛЕНИЕ (2008-10-29):

C# 4.0 установлен представить дополнительные и именованные параметры. См. эту запись в блоге на codebetter.com.

14
ответ дан 18 December 2019 в 06:24
поделиться

Это - действительно все о Excel и как это обрабатывает, вставляет. Если Вы выберете диапазон ячеек и щелкнете правой кнопкой по Insert, то Вас спросят который направление сместить ячейки. Это от Excel Help:

=======

Вставьте метод на объекте диапазона

Вставляет ячейку или диапазон ячеек в рабочий лист или макро-лист и смещает другие ячейки далеко для создания пространства.

выражение. Вставьте (Сдвиг, CopyOrigin)

Необходимое выражение. Выражение, которое возвращает объект Диапазона.

Сместите Дополнительный Вариант. Указывает который способ сместить ячейки. Может быть одна из следующих констант XlInsertShiftDirection: xlShiftToRight или xlShiftDown. Если этот аргумент опущен, Microsoft Excel решает на основе формы диапазона.

CopyOrigin Дополнительный Вариант. Источник копии.

===========

Если Вам не определили константы, Вы можете subsitute следующие числа

xlShiftDown:-4121 xlShiftToLeft:-4159 xlShiftToRight:-4161 xlShiftUp:-4162

1
ответ дан 18 December 2019 в 06:24
поделиться

VB6 и VB.net имеют дополнительные параметры в методе. c# имеет опцию сделать перегрузку метода.

VB6/VB.net способ сказать Сдвиг: = xlToRight позволяет передающее значение определенного параметра по имени.

например, общественность sub mymethod (дополнительный как целое число =-1, дополнительный b как integer=1)... заканчивают sub

Я могу назвать этот метод с mymethod (b: = 10)

Для c# могло быть 2 метода для этого


void Shift()
{
defaultDirection = directionEnum.Left;
Shift(defaultDirection);
}

void Shift(directionEnum direction)
{
}

Еще 1 вещь. Хотя можно назвать метод только передающими параметрами, добавив название параметра, когда вызов делает код немного более читаемым.
например, DoSomethingWithData (CustomerData: = клиент, SortDirection: = Возрастающий)

Надежда, которая помогает.

2
ответ дан 18 December 2019 в 06:24
поделиться

Просто для уточнения ответ John Rudy.

sytax является дополнительным (маленький 'o'), означая, что Вы не должны использовать его. По моему опыту, большинство кодеров VB6 не использует синтаксис и вместо этого предпочитает регулярные параметры 'без имени'.

Если Вы действительно принимаете решение использовать его, все последующие параметры в sub вызове процедуры нужно назвать.

Именованный синтаксис параметра может использоваться на всех параметрах, был ли соответствующий аргумент объявлен с помощью ключевого слова VBA Optional (капитал 'O'). Рассмотрите, например, эту (немного ненормальную) функцию VBA с двумя параметрами, одним требуемым и один Optional:

Private Function TimesTen( _
    ByVal Value As Long, _
    Optional ByVal Factor As Long = 10 _
) As Long
  TimesTen = Value * Factor
End Function

В VBA я могу назвать его с помощью названный параметрами для обязательного параметра ( Optional параметр может просто быть опущен в VBA, в отличие от этого, в C#.NET для который Type.Missing должен использоваться для всех опущенных Optional параметры):

  MsgBox TimesTen(Value:=9)

Если я хотел назвать его с параметрами в 'неправильном' порядке (почему??) Я могу достигнуть этого использования, названного параметрами:

  MsgBox TimesTen(Factor:=11, Value:=9)

При попытке использовать регулярный вызов параметра 'без имени' после того, как именованный вызывает ошибку компиляции:

  MsgBox TimesTen(Value:=9, 11)

Итак, почему кодеры VBA используют названные параметры, если кодеры VB6 редко делают, даже при том, что они используют по существу тот же язык? Я думаю, что это - потому что VBA, сгенерированный макро-устройством записи приложений MS Office, склоняется к (всегда?) генерируют названные параметры, и многие кодеры VBA изучают программирование этого пути.

8
ответ дан 18 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

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