супер заявление в C # - PullRequest
8 голосов
/ 22 июля 2011

Я создаю класс для управления исключениями в c #, и я хотел бы создать несколько методов конструктора, которые вызывают суперкласс;это определение моего класса:

class DataSourceNotFoundException: System.Exception 

, но в c # нет супер-метода, который я должен вызывать, чтобы получить методы конструктора System.Exception?

Ответы [ 3 ]

11 голосов
/ 22 июля 2011

Вы вызываете родительский конструктор, используя 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 # для получения более подробной информации.

10 голосов
/ 22 июля 2011

В общем, ключевое слово base - это то, что вы хотите. Чек http://msdn.microsoft.com/en-us/library/hfw7t1ce(v=vs.71).aspx

1 голос
/ 22 июля 2011
class DataSourceNotFoundException: System.Exception {
    public DataSourceNotFoundException()
        : base()
    {
        //some code
    }

    public DataSourceNotFoundException(string message, object other)
        : base(message)
    {
        //some code
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...