AmbiguousMatchException Oluşturucular

Tanım

AmbiguousMatchException sınıfının yeni bir örneğini başlatır.Initializes a new instance of the AmbiguousMatchException class.

Aşırı Yüklemeler

AmbiguousMatchException()

Boş bir ileti dizesiyle sınıfının yeni bir örneğini başlatır AmbiguousMatchException ve kök neden özel durumu olarak ayarlanır null .Initializes a new instance of the AmbiguousMatchException class with an empty message string and the root cause exception set to null.

AmbiguousMatchException(String)

Sınıfın yeni bir örneğini AmbiguousMatchException , ileti dizesi verilen iletiye ve kök neden özel durumu olarak ayarlanmış olarak başlatır 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)

AmbiguousMatchExceptionBelirtilen bir hata iletisiyle sınıfın yeni bir örneğini ve bu özel durumun nedeni olan iç özel duruma bir başvuruyu başlatır.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()

Boş bir ileti dizesiyle sınıfının yeni bir örneğini başlatır AmbiguousMatchException ve kök neden özel durumu olarak ayarlanır 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 ()

Açıklamalar

AmbiguousMatchException öğesinden devralır Exception .AmbiguousMatchException inherits from Exception. Bu Oluşturucu Exception nesnenin özelliklerini aşağıdaki tabloda gösterildiği gibi ayarlar.This constructor sets the properties of the Exception object as shown in the following table.

ÖzellikProperty DeğerValue
InnerException null
Message Boş dize ("").The empty string ("").

Ayrıca bkz.

Şunlara uygulanır

AmbiguousMatchException(String)

Sınıfın yeni bir örneğini AmbiguousMatchException , ileti dizesi verilen iletiye ve kök neden özel durumu olarak ayarlanmış olarak başlatır 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);
public AmbiguousMatchException (string? message);
new System.Reflection.AmbiguousMatchException : string -> System.Reflection.AmbiguousMatchException
Public Sub New (message As String)

Parametreler

message
String

Bu özel durumun oluşturulduğu nedeni belirten bir dize.A string indicating the reason this exception was thrown.

Açıklamalar

AmbiguousMatchException öğesinden devralır Exception .AmbiguousMatchException inherits from Exception. Bu Oluşturucu Exception nesnenin özelliklerini aşağıdaki tabloda gösterildiği gibi ayarlar.This constructor sets the properties of the Exception object as shown in the following table.

ÖzellikProperty DeğerValue
InnerException null
Message messageDize.The message string.

Şunlara uygulanır

AmbiguousMatchException(String, Exception)

AmbiguousMatchExceptionBelirtilen bir hata iletisiyle sınıfın yeni bir örneğini ve bu özel durumun nedeni olan iç özel duruma bir başvuruyu başlatır.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);
public AmbiguousMatchException (string? message, Exception? inner);
new System.Reflection.AmbiguousMatchException : string * Exception -> System.Reflection.AmbiguousMatchException
Public Sub New (message As String, inner As Exception)

Parametreler

message
String

Özel durumun nedenini açıklayan hata iletisi.The error message that explains the reason for the exception.

inner
Exception

Geçerli özel durumun nedeni olan özel durum.The exception that is the cause of the current exception. innerParametre değilse null , geçerli özel durum, catch iç özel durumu işleyen bir blokta oluşturulur.If the inner parameter is not null, the current exception is raised in a catch block that handles the inner exception.

Örnekler

Aşağıdaki örnek, her bir adlı iki sınıfı gösterir Mymethod .The following example shows two classes, each named Mymethod. Bir sınıf bir tamsayı alır ve diğeri bir dize alır.One class takes an integer and the other takes a string. Bir tamsayı geçirilirse Mymethod , ilk sınıf kullanılır.If an integer is passed to Mymethod, the first class is used. Bir dize geçirilirse, ikinci sınıf kullanılır.If a string is passed, the second class is used. Ne kullanılacağını tespit edilemez ise Mymethod AmbiguousMatchException oluşturulur.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.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

        '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

        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(Environment.NewLine + "{0}" + Environment.NewLine + "{1}", ex.GetType().FullName, ex.Message)
            Catch
                Console.WriteLine(Environment.NewLine + "Some other exception.")
            End Try
            Return
        End Sub
    End Class
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.

Açıklamalar

Bir önceki özel durumun doğrudan bir sonucu olarak oluşturulan bir özel durum, InnerException özelliğindeki önceki özel duruma başvuru içermelidir.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 özelliği, oluşturucuya iletilen aynı değeri ya da InnerException özelliği oluşturucuya iç özel durum değeri sağlamıyorsa null değerini döndürür.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.

Aşağıdaki tablo, AmbiguousMatchException öğesinin bir örneği için başlangıç özellik değerlerini gösterir.The following table shows the initial property values for an instance of AmbiguousMatchException.

ÖzellikProperty DeğerValue
InnerException İç özel duruma başvuru.The inner exception reference.
Message Hata iletisi dizesi.The error message string.

Ayrıca bkz.

Şunlara uygulanır