AmbiguousMatchException Oluşturucular

Tanım

AmbiguousMatchException sınıfının yeni bir örneğini başlatır.

Aşırı Yüklemeler

AmbiguousMatchException()

Boş bir ileti dizesiyle sınıfının yeni bir örneğini AmbiguousMatchException başlatır ve kök neden özel durumu olarak nullayarlanır.

AmbiguousMatchException(String)

İleti dizesi verilen iletiye AmbiguousMatchException ve kök neden özel durumu olarak ayarlanmış şekilde sınıfının yeni bir örneğini nullbaşlatır.

AmbiguousMatchException(String, Exception)

Sınıfın AmbiguousMatchException yeni bir örneğini belirtilen bir hata iletisiyle ve bu özel durumun nedeni olan iç özel duruma başvuruyla başlatır.

AmbiguousMatchException()

Kaynak:
AmbiguousMatchException.cs
Kaynak:
AmbiguousMatchException.cs
Kaynak:
AmbiguousMatchException.cs

Boş bir ileti dizesiyle sınıfının yeni bir örneğini AmbiguousMatchException başlatır ve kök neden özel durumu olarak nullayarlanır.

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

Açıklamalar

AmbiguousMatchException ' den Exceptiondevralır. Bu oluşturucu, aşağıdaki tabloda gösterildiği gibi nesnenin Exception özelliklerini ayarlar.

Özellik Değer
InnerException null
Message Boş dize ("").

Ayrıca bkz.

Şunlara uygulanır

AmbiguousMatchException(String)

Kaynak:
AmbiguousMatchException.cs
Kaynak:
AmbiguousMatchException.cs
Kaynak:
AmbiguousMatchException.cs

İleti dizesi verilen iletiye AmbiguousMatchException ve kök neden özel durumu olarak ayarlanmış şekilde sınıfının yeni bir örneğini nullbaşlatır.

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 neden oluşturulduğunu gösteren bir dize.

Açıklamalar

AmbiguousMatchException ' den Exceptiondevralır. Bu oluşturucu, aşağıdaki tabloda gösterildiği gibi nesnenin Exception özelliklerini ayarlar.

Özellik Değer
InnerException null
Message Dize message .

Şunlara uygulanır

AmbiguousMatchException(String, Exception)

Kaynak:
AmbiguousMatchException.cs
Kaynak:
AmbiguousMatchException.cs
Kaynak:
AmbiguousMatchException.cs

Sınıfın AmbiguousMatchException yeni bir örneğini belirtilen bir hata iletisiyle ve bu özel durumun nedeni olan iç özel duruma başvuruyla başlatır.

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.

inner
Exception

Geçerli özel durumun nedeni olan özel durum. inner parametresi değilsenull, geçerli özel durum iç özel durumu işleyen bir catch blokta oluşturulur.

Örnekler

Aşağıdaki örnekte, her birinde adlı Mymethodiki yöntem gösterilmektedir. Yöntemlerden biri tamsayı, diğeri ise bir dize alır. öğesine bir tamsayı geçirilirse Mymethod, ilk yöntem kullanılır. Bir dize geçirilirse ikinci yöntem kullanılır. Hangisinin Mymethod kullanılacağı belirlenemezse, AmbiguousMatchException oluşturulur.

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 int
        public static void Mymethod(int number)
        {
           Console.WriteLine("I am from 'int' 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(int)
                Mymethod("3");  // goes to Mymethod(string)

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

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

                //Invoke a method, utilizing a int 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 'int' method
// I am from 'string' method.
// I am from 'int' 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. 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.

Aşağıdaki tablo, AmbiguousMatchException öğesinin bir örneği için başlangıç özellik değerlerini gösterir.

Özellik Değer
InnerException İç özel duruma başvuru.
Message Hata iletisi dizesi.

Ayrıca bkz.

Şunlara uygulanır