AmbiguousMatchException AmbiguousMatchException AmbiguousMatchException AmbiguousMatchException Constructors

Определение

Перегрузки

AmbiguousMatchException() AmbiguousMatchException() AmbiguousMatchException()

Инициализирует новый экземпляр класса AmbiguousMatchException пустой строкой сообщения и корневым исключением-причиной, равным null.Initializes a new instance of the AmbiguousMatchException class with an empty message string and the root cause exception set to null.

AmbiguousMatchException(String) AmbiguousMatchException(String) AmbiguousMatchException(String) AmbiguousMatchException(String)

Инициализирует новый экземпляр класса AmbiguousMatchException заданным сообщением в качестве строки сообщения и корневым исключением-причиной, равным null.Initializes a new instance of the AmbiguousMatchException class with its message string set to the given message and the root cause exception set to null.

AmbiguousMatchException(String, Exception) AmbiguousMatchException(String, Exception) AmbiguousMatchException(String, Exception) AmbiguousMatchException(String, Exception)

Инициализирует новый экземпляр класса AmbiguousMatchException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.Initializes a new instance of the AmbiguousMatchException class with a specified error message and a reference to the inner exception that is the cause of this exception.

AmbiguousMatchException() AmbiguousMatchException() AmbiguousMatchException()

Инициализирует новый экземпляр класса AmbiguousMatchException пустой строкой сообщения и корневым исключением-причиной, равным null.Initializes a new instance of the AmbiguousMatchException class with an empty message string and the root cause exception set to null.

public:
 AmbiguousMatchException();
public AmbiguousMatchException ();
Public Sub New ()

Комментарии

ТипAmbiguousMatchException наследуется от типа Exception.AmbiguousMatchException inherits from Exception. Этот конструктор задает свойства Exception объекта, как показано в следующей таблице.This constructor sets the properties of the Exception object as shown in the following table.

Свойство.Property ЗначениеValue
InnerException null
Message Пустая строка (»»).The empty string ("").
Дополнительно

AmbiguousMatchException(String) AmbiguousMatchException(String) AmbiguousMatchException(String) AmbiguousMatchException(String)

Инициализирует новый экземпляр класса AmbiguousMatchException заданным сообщением в качестве строки сообщения и корневым исключением-причиной, равным null.Initializes a new instance of the AmbiguousMatchException class with its message string set to the given message and the root cause exception set to null.

public:
 AmbiguousMatchException(System::String ^ message);
public AmbiguousMatchException (string message);
new System.Reflection.AmbiguousMatchException : string -> System.Reflection.AmbiguousMatchException
Public Sub New (message As String)

Параметры

message
String String String String

Строка, показывающая причину создания исключения.A string indicating the reason this exception was thrown.

Комментарии

ТипAmbiguousMatchException наследуется от типа Exception.AmbiguousMatchException inherits from Exception. Этот конструктор задает свойства Exception объекта, как показано в следующей таблице.This constructor sets the properties of the Exception object as shown in the following table.

Свойство.Property ЗначениеValue
InnerException null
Message message Строка.The message string.

AmbiguousMatchException(String, Exception) AmbiguousMatchException(String, Exception) AmbiguousMatchException(String, Exception) AmbiguousMatchException(String, Exception)

Инициализирует новый экземпляр класса AmbiguousMatchException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.Initializes a new instance of the AmbiguousMatchException class with a specified error message and a reference to the inner exception that is the cause of this exception.

public:
 AmbiguousMatchException(System::String ^ message, Exception ^ inner);
public AmbiguousMatchException (string message, Exception inner);
new System.Reflection.AmbiguousMatchException : string * Exception -> System.Reflection.AmbiguousMatchException
Public Sub New (message As String, inner As Exception)

Параметры

message
String String String String

Сообщение об ошибке, указывающее причину создания исключения.The error message that explains the reason for the exception.

inner
Exception Exception Exception Exception

Исключение, которое является причиной текущего исключения.The exception that is the cause of the current exception. Если значение параметра inner не равно null, текущее исключение сгенерировано в блоке catch, обрабатывающем внутреннее исключение.If the inner parameter is not null, the current exception is raised in a catch block that handles the inner exception.

Примеры

В следующем примере показано два класса, каждая с именем Mymethod.The following example shows two classes, each named Mymethod. Один класс принимает целое число, а вторая строка.One class takes an integer and the other takes a string. Если целое число передается в Mymethod, используется первый класс.If an integer is passed to Mymethod, the first class is used. Если строка передается, используется второй класс.If a string is passed, the second class is used. Если невозможно определить, какие Mymethod для использования, AmbiguousMatchException возникает исключение.If it cannot be determined which Mymethod to use, AmbiguousMatchException is thrown.

using namespace System;
using namespace System::Reflection;

namespace Ambiguity
{
    ref class Myambiguous
    {
    public:

        //The first overload is typed to an Int32
        static void Mymethod(Int32 number)
        {
            Console::WriteLine("I am from 'Int32' method");
        }

        //The second overload is typed to a String^
        static void Mymethod(String^ alpha)
        {
            Console::WriteLine("I am from 'String^' method.");
        }

        static void Main()
        {
            try
            {
                //The following does not cause as exception
                Mymethod(2);    // goes to Mymethod (Int32)
                Mymethod("3");  // goes to Mymethod (String*)
                Type^ Mytype = Type::GetType("Ambiguity.Myambiguous");
                array<Type^>^temp0 = {Int32::typeid};
                MethodInfo^ Mymethodinfo32 = Mytype->GetMethod("Mymethod", temp0);
                array<Type^>^temp1 = {System::String::typeid};
                MethodInfo^ Mymethodinfostr = Mytype->GetMethod("Mymethod", temp1);

                //Invoke a method, utilizing a Int32 integer
                array<Object^>^temp2 = {2};
                Mymethodinfo32->Invoke(nullptr, temp2);

                //Invoke the method utilizing a String^
                array<Object^>^temp3 = {"1"};
                Mymethodinfostr->Invoke(nullptr, temp3);

                //The following line causes an ambiguous exception
                MethodInfo^ Mymethodinfo = Mytype->GetMethod("Mymethod");
            }
            catch (AmbiguousMatchException^ ex)
            {
                Console::WriteLine("\n{0}\n{1}", ex->GetType()->FullName, ex->Message);
            }
            catch (...)
            {
                Console::WriteLine("\nSome other exception.");
            }

            return;
        }
    };
}

int main()
{
    Ambiguity::Myambiguous::Main();
}

//This code produces the following output:
//
// I am from 'Int32' method
// I am from 'String^' method.
// I am from 'Int32' method
// I am from 'String^' method.
//
// System.Reflection.AmbiguousMatchException
// Ambiguous match found.
using System;
using System.Reflection;

namespace Ambiguity
{
    class Myambiguous
    {
        //The first overload is typed to an Int32
        public static void Mymethod(Int32 number)
        {
           Console.WriteLine("I am from 'Int32' method");
        }

        //The second overload is typed to a string
        public static void Mymethod(string alpha)
        {
            Console.WriteLine("I am from 'string' method.");
        }

        public static void Main()
        {
            try
            {
                //The following does not cause as exception
                Mymethod(2);    // goes to Mymethod(Int32)
                Mymethod("3");  // goes to Mymethod(string)

                Type Mytype = Type.GetType("Ambiguity.Myambiguous");

                MethodInfo Mymethodinfo32 = Mytype.GetMethod("Mymethod", new Type[]{typeof(Int32)});
                MethodInfo Mymethodinfostr = Mytype.GetMethod("Mymethod", new Type[]{typeof(System.String)});

                //Invoke a method, utilizing a Int32 integer
                Mymethodinfo32.Invoke(null, new Object[]{2});

                //Invoke the method utilizing a string
                Mymethodinfostr.Invoke(null, new Object[]{"1"});

                //The following line causes an ambiguious exception
                MethodInfo Mymethodinfo = Mytype.GetMethod("Mymethod");
            }   // end of try block
            catch (AmbiguousMatchException ex)
            {
                Console.WriteLine("\n{0}\n{1}", ex.GetType().FullName, ex.Message);
            }
            catch
            {
                Console.WriteLine("\nSome other exception.");
            }
            return;
        }
    }
}

//This code produces the following output:
//
// I am from 'Int32' method
// I am from 'string' method.
// I am from 'Int32' method
// I am from 'string' method.

// System.Reflection.AmbiguousMatchException
// Ambiguous match found.
Imports System
Imports System.Reflection

Namespace Ambiguity
    Class Myambiguous

        'The first overload is typed to an Int32
        Overloads Public Shared Sub Mymethod(number As Int32)
            Console.WriteLine("I am from 'Int32' method")
        End Sub 'Mymethod

        'The second overload is typed to a string
        Overloads Public Shared Sub Mymethod(alpha As String)
            Console.WriteLine("I am from 'string' method.")
        End Sub 'Mymethod

        Public Shared Sub Main()
            Try
                'The following does not cause as exception
                Mymethod(2) ' goes to Mymethod Int32)
                Mymethod("3") ' goes to Mymethod(string)
                Dim Mytype As Type = Type.GetType("Ambiguity.Myambiguous")

                Dim Mymethodinfo32 As MethodInfo = Mytype.GetMethod("Mymethod", New Type() {GetType(Int32)})
                Dim Mymethodinfostr As MethodInfo = Mytype.GetMethod("Mymethod", New Type() {GetType(System.String)})

                'Invoke a method, utilizing a Int32 integer
                Mymethodinfo32.Invoke(Nothing, New Object() {2})

                'Invoke the method utilizing a string
                Mymethodinfostr.Invoke(Nothing, New Object() {"1"})

                'The following line causes an ambiguious exception
                Dim Mymethodinfo As MethodInfo = Mytype.GetMethod("Mymethod")
                ' end of try block
            Catch ex As AmbiguousMatchException
                Console.WriteLine(vbNewLine + "{0}" + vbNewLine + "{1}", ex.GetType().FullName, ex.Message)
            Catch
                Console.WriteLine(vbNewLine + "Some other exception.")
            End Try
            Return
        End Sub 'Main
    End Class 'Myambiguous
End Namespace
' This code produces the following output:
'
' I am from 'Int32' method
' I am from 'string' method.
' I am from 'Int32' method
' I am from 'string' method.
'
' System.Reflection.AmbiguousMatchException
' Ambiguous match found.

Комментарии

Исключение, созданное как прямой результат предыдущего исключения, должно содержать в свойстве InnerException ссылку на предыдущее исключение.An exception that is thrown as a direct result of a previous exception should include a reference to the previous exception in the InnerException property. Свойство InnerException возвращает значение, переданное конструктору, или значение null, если свойство InnerException не передает конструктору значение внутреннего исключения.The InnerException property returns the same value that is passed into the constructor, or null if the InnerException property does not supply the inner exception value to the constructor.

В следующей таблице представлены исходные значения свойств экземпляра класса AmbiguousMatchException.The following table shows the initial property values for an instance of AmbiguousMatchException.

Свойство.Property ЗначениеValue
InnerException Ссылка на внутреннее исключение.The inner exception reference.
Message Строка сообщения об ошибке.The error message string.
Дополнительно

Применяется к