супер заявление в 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
    }