Необязательные параметры в решениях Office

Многие методы в объектных моделях приложений Microsoft Office принимают необязательные параметры. При использовании Visual Basic для разработки решения Office в Visual Studio значение для необязательных параметров передавать не нужно, так как для каждого отсутствующего параметра автоматически используется значение по умолчанию. В большинстве случаев можно также опустить необязательные параметры в проектах Visual C#. Однако нельзя исключить необязательные параметры ThisDocument ссылок класса в проектах Word на уровне документа.

Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO. См. сведения о функциях, доступных по Приложение Office и типу проекта.

Дополнительные сведения о работе с необязательными параметрами в проектах Visual C# и Visual Basic см. в разделе Именованные и необязательные аргументы (руководство по программированию на C#) и необязательные параметры (Visual Basic).

Примечание.

В более ранних версиях Visual Studio в проектах Visual C# необходимо было передавать значение для каждого необязательного параметра. Для удобства эти проекты содержат глобальную переменную с именем missing, которую можно передавать в необязательный параметр, если для него нужно использовать значение по умолчанию. Проекты Visual C# для Office в Visual Studio по-прежнему включают missing переменную, но обычно ее не нужно использовать при разработке решений Office в Visual Studio 2013, за исключением случаев вызова методов с необязательными параметрами ссылок в классе в ThisDocument проектах на уровне документов для Word.

Пример в Excel

Метод CheckSpelling имеет много необязательных параметров. Как показано в следующем примере кода, для одних параметров можно указать значения, а для других — принять значение по умолчанию. В этом примере требуется проект на уровне документа с классом листа под именем Sheet1.


Globals.Sheet1.CheckSpelling(ignoreUppercase: true);

Пример в Word

Метод Execute имеет много необязательных параметров. Как показано в следующем примере кода, для одних параметров можно указать значения, а для других — принять значение по умолчанию.

Word.Range documentRange = this.Application.ActiveDocument.Content;
documentRange.Find.ClearFormatting();
documentRange.Find.Execute(FindText: "blue", ReplaceWith: "red", Replace: Word.WdReplace.wdReplaceAll);

Использование необязательных параметров методов в классе ThisDocument в проектах уровня документа Visual C# для Word

Объектная модель Word содержит множество методов с необязательными параметрами ссылок , принимаюющими Object значения. Однако нельзя исключить необязательные параметры ссылок методов созданного ThisDocument класса в проектах уровня документа Visual C# для Word. Visual C# позволяет не указывать необязательные параметры ссылок только для методов интерфейсов, а не классов. Например, следующий пример кода не компилируется, так как не удается исключить необязательные параметры ссылокCheckSpelling метода ThisDocument класса.

Globals.ThisDocument.CheckSpelling(ignoreUppercase: true);

При вызове методов класса ThisDocument следуйте приведенным ниже рекомендациям:

  • Чтобы принять значение по умолчанию необязательного параметра ссылок , передайте missing переменную в параметр. Переменная missing автоматически определяется в проектах Visual C# для Office, и ей назначается значение Missing в созданном коде проекта.

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

    В следующем примере кода показано, как вызвать CheckSpelling метод, указав значение для параметра ignoreUppercase и принимая значение по умолчанию для других параметров.

    object ignoreUppercase = true;
    Globals.ThisDocument.CheckSpelling(
        ref missing, ref ignoreUppercase, ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
    

    Если вы хотите написать код, который пропускает необязательные параметры ссылок метода в ThisDocument классе, можно также вызвать тот же метод для Document объекта InnerObject , возвращаемого свойством, и опустить параметры из этого метода. Это можно сделать, так как Document — интерфейс, а не класс.

    Globals.ThisDocument.InnerObject.CheckSpelling(IgnoreUppercase: true);
    

    Дополнительные сведения о параметрах значений и ссылочных типов см. в разделе "Сквозные аргументы по значению" и по ссылке (Visual Basic) (для Visual Basic) и параметров pass (руководство по программированию на C#).