Почему ключевое слово 'this' нельзя использовать в статическом методе? - PullRequest
13 голосов
/ 11 августа 2010

Почему ключевое слово this нельзя использовать в статическом методе? Мне интересно, почему C # определяет это ограничение. Какие преимущества можно получить с помощью этого ограничения?

[Update]: На самом деле, это вопрос, который я получил в интервью. Я знаю использование «static» и «this», основываясь на всех ваших ответах. Думаю, я немного знаю, почему эти два нельзя использовать вместе. То есть статический метод используется для изменения состояния или выполнения чего-либо на уровне типа, но когда вам нужно использовать «это», это означает, что вы хотите изменить состояние или сделать что-либо на уровне экземпляра. Чтобы различить изменение состояния типа и изменение состояния экземпляра, c # donot позволяет использовать this в статическом методе. Я прав?

Ответы [ 13 ]

0 голосов
/ 11 августа 2010

Короткий ответ для вас будет: это относится к экземпляру класса, который не существует в статической области видимости.

Но, пожалуйста, найдите хорошую книгу / класс и попытайтесь понять основные объектно-ориентированные концепции, прежде чем углубляться в любой объектно-ориентированный язык программирования.

0 голосов
/ 11 августа 2010

'this' относится к экземпляру класса. Статика инициализируется без создания экземпляра, и, следовательно, статический метод не может ссылаться на «экземпляр», который не создан.

0 голосов
/ 11 августа 2010

this используется для ссылки на родительский объект переменной или метода.Когда вы объявляете static для метода, метод может быть вызван без необходимости создания экземпляра объекта класса.Поэтому ключевое слово this недопустимо, поскольку ваш статический метод не связан ни с какими объектами.

...