супер заявление в C#
Я создаю класс для управления исключением в c#, и я хотел бы создать некоторые методы конструктора, которые напоминают суперкласс; это определение моего класса:
class DataSourceNotFoundException: System.Exception
но так как в c# нет супер метода, что я должен вызвать, чтобы получить методы конструктора System.Exception
?
3 ответов
вы вызываете родительский конструктор с помощью base
до тело конструктора:
public class FooException : Exception
{
public FooException(string message) : base(message)
{
}
}
очевидно, вы не есть чтобы просто передать параметр из вашего собственного конструктора в качестве аргумента базовому конструктору:
public class FooException : Exception
{
public FooException(int x) : base("Hello")
{
// Do something with x
}
}
эквивалент цепи к конструктору в текущем классе должен использовать this
вместо base
.
обратите внимание, что цепочка конструкторов работает очень немного по-другому C# по сравнению с Java, относительно того, когда запускаются инициализаторы переменных экземпляра. Смотрите мой статья на C# конструкторы для получения более подробной информации.
вообще ключевое слово base
Это то, что вы хотите. Проверить http://msdn.microsoft.com/en-us/library/hfw7t1ce (v=против 71).aspx
class DataSourceNotFoundException: System.Exception {
public DataSourceNotFoundException()
: base()
{
//some code
}
public DataSourceNotFoundException(string message, object other)
: base(message)
{
//some code
}