AmbiguousMatchException Конструкторы
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса AmbiguousMatchException.
Перегрузки
AmbiguousMatchException() |
Инициализирует новый экземпляр класса AmbiguousMatchException пустой строкой сообщения и корневым исключением-причиной, равным |
AmbiguousMatchException(String) |
Инициализирует новый экземпляр класса AmbiguousMatchException заданным сообщением в качестве строки сообщения и корневым исключением-причиной, равным |
AmbiguousMatchException(String, Exception) |
Инициализирует новый экземпляр класса AmbiguousMatchException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение. |
AmbiguousMatchException()
- Исходный код:
- AmbiguousMatchException.cs
- Исходный код:
- AmbiguousMatchException.cs
- Исходный код:
- AmbiguousMatchException.cs
Инициализирует новый экземпляр класса AmbiguousMatchException пустой строкой сообщения и корневым исключением-причиной, равным null
.
public:
AmbiguousMatchException();
public AmbiguousMatchException ();
Public Sub New ()
Комментарии
Интерфейс AmbiguousMatchException
наследуется от интерфейса Exception. Этот конструктор задает свойства объекта , Exception
как показано в следующей таблице.
Свойство | Значение |
---|---|
InnerException | null |
Message | Пустая строка (""). |
См. также раздел
Применяется к
AmbiguousMatchException(String)
- Исходный код:
- AmbiguousMatchException.cs
- Исходный код:
- AmbiguousMatchException.cs
- Исходный код:
- AmbiguousMatchException.cs
Инициализирует новый экземпляр класса AmbiguousMatchException заданным сообщением в качестве строки сообщения и корневым исключением-причиной, равным 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)
Параметры
- message
- String
Строка, показывающая причину создания исключения.
Комментарии
Интерфейс AmbiguousMatchException
наследуется от интерфейса Exception. Этот конструктор задает свойства объекта , Exception
как показано в следующей таблице.
Свойство | Значение |
---|---|
InnerException | null |
Message | Строка message . |
Применяется к
AmbiguousMatchException(String, Exception)
- Исходный код:
- AmbiguousMatchException.cs
- Исходный код:
- AmbiguousMatchException.cs
- Исходный код:
- AmbiguousMatchException.cs
Инициализирует новый экземпляр класса AmbiguousMatchException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.
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)
Параметры
- message
- String
Сообщение об ошибке, указывающее причину создания исключения.
- inner
- Exception
Исключение, которое является причиной текущего исключения. Если значение параметра inner
не равно null
, текущее исключение сгенерировано в блоке catch
, обрабатывающем внутреннее исключение.
Примеры
В следующем примере показаны два метода, каждый из которых называется Mymethod
. Один метод принимает целое число, а другой — строку. Если целое число передается Mymethod
в , используется первый метод . При передаче строки используется второй метод . Если не удается определить, какой Mymethod
из них следует использовать, AmbiguousMatchException
возникает исключение .
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.
Комментарии
Исключение, созданное как прямой результат предыдущего исключения, должно содержать в свойстве InnerException ссылку на предыдущее исключение. Свойство InnerException возвращает то же значение, которое передается в конструктор, или null
, если свойство InnerException не предоставляет значение внутреннего исключения в конструктор.
В следующей таблице показаны первоначальные значения свойств для экземпляра AmbiguousMatchException.
Свойство | Значение |
---|---|
InnerException | Ссылка на внутреннее исключение. |
Message | Строка сообщения об ошибке. |