Правила C# очень отличаются от того из Java и C++.
, Когда Вы находитесь в конструкторе для некоторого объекта в C#, тот объект существует в полностью инициализированный (просто не "созданный") форма как ее полностью производный тип.
namespace Demo
{
class A
{
public A()
{
System.Console.WriteLine("This is a {0},", this.GetType());
}
}
class B : A
{
}
// . . .
B b = new B(); // Output: "This is a Demo.B"
}
Это означает, что, если Вы вызываете виртуальную функцию от конструктора A, это решит к любому переопределению в B, если Вам предоставят.
Даже при намеренной установке A и B как это, полностью понимая поведение системы, Вы могли быть в для шока позже. Скажите, что Вы вызвали виртуальные функции в конструкторе B, "зная", что они будут обработаны B или как соответствующие. Тогда передачи времени, и кто-то еще решает, что они должны определить C и переопределить некоторые виртуальные функции там. Внезапно конструктор B заканчивает код вызова в C, который мог привести к довольно удивительному поведению.
Это - вероятно, хорошая идея избежать виртуальных функций в конструкторах так или иначе, так как правила настолько отличающиеся между C#, C++ и Java. Ваши программисты не могут знать, что ожидать!
Ctrl + Space is the autocomplete shortcut
All shortcuts you can find under Window -> Preferences -> General -> Keys
My favourites:
Ctrl + Space - auto complete
Ctrl + 1 - show quick fix options when you are over an error / warning
Shift + Ctrl + L - list short cuts
Ctrl + Shift + O : resolve all dependances automaticall. In Java, it's a life saver as it cleans old packages and add the required one without a single line to write.
"Right click" then "refactor" : all the features are handy, but I espacially love "rename" (Ctrl + Shift + R, c.f comments) because it will apply the changes to all the project. No more tricky find / replace wit regexp to do ensure you breal nothing else :-)
"Right click" then "source" : equally useful, with a special mention to "generate getter and setter" and "implement methods"
Ctrl + D : delete a line. Kinda cool.
I kind of remember CTRL+SPACE was the shortcut for autocomplete.
General Eclipse tips
Один трюк, который мне нравится в Eclipse для Java, - это запись в обратном направлении (то есть вы пишете клиент до того, как он вызывает код). Обычно мы думаем об автозаполнении, чтобы помочь нам с уже существующими методами и переменными. Это нормально, но еще круче, когда метод / класс не существует.
Попробуйте ввести этот код в метод (где угодно, правда):
Who who = new Who();
who.whatUpMan("hi", 32);
Теперь щелкните левой кнопкой мыши на Who
в начале. Это даст вам выбор создать класс, интерфейс, перечисление и т. Д.
Теперь щелкните левой кнопкой мыши на whatUpMan
. Он предложит вам создать метод с правильными типами параметров и всем остальным.
Они называются «Быстрые исправления» в Eclipse и дают вам полную свободу кодирования от клиента «назад» к классам, которые он использует. И когда у вас уже есть метод,
Еще одна экономия времени - автоматическое форматирование кода с помощью Ctrl + ] Shift + F .
Настройки форматирования http://img187.imageshack.us/img187/5866/eclipseformatter.png
Для некоторых приложений ответ заключается в генерации кода с использованием EMF . Но кривая обучения EMF значительна.
Как уже упоминалось, используется команда Ctrl + Пробел для автозаполнения. Вы можете ускорить это с помощью camelCase ... поэтому в вашем примере:
someVeryLongVariablesWhichIWantToTypeFast
вы можете начать набирать sVL , затем Ctrl + Space ). автозаполнение или список всех совпадающих переменных.
CamelCase также работает для указания классов, поиска классов и т. д.
Другие, которые мне нравятся / использую:
type sys Ctrl + Пробел для получения оператора System.out.println (или ошибка)
тип fore Ctrl + Пробел после строки массива / списка для его выполнения
Щелкните аргумент метода и Ctrl + 1 , чтобы создать для него поле и назначить его, отлично подходит для конструкторов
Ctrl + 1 для любой локальной переменной для преобразования в поле, объявление разделения,или встроите его
, если вы выбрали
object.method().method2().method3()
object.method () и набрали Ctrl + 1 для назначения полю или локальной переменной, тогда вы получите
Object objLocal=object.method()
objLocal.method2().method3()
//Can now select objLocal.method2() and do the same again
Еще несколько средств экономии времени, которые, кажется, не упоминаются:
Ctrl + 3 «Быстрый доступ», который в основном позволяет вам достичь чего угодно, не слишком много щелкая мышью. Например, введите 'nav' во всплывающем диалоговом окне, а не Window | Показать вид | Общие | Навигатор
или где бы то ни было.
Ctrl + O 'Quick Outline': при редактировании Java (и некоторых других вещей) выскакивает облегченное диалоговое окно, в котором вы можете найти что-либо в файле несколькими нажатиями клавиш
Shift + Alt + T «Рефакторинг» и другие вещи под этим меню - ищите быстрые клавиши, часто используйте 'Rename', 'Move', 'Extract method', 'Change method signature'
Alt + Up / Down перемещайте блоки кода вверх / вниз без вырезания / вставки
Alt + Shift + Up / Down легко выбирает различные уровни кода (выражения, утверждения, методы, класс)
Ctrl + 1 в выбранном коде предлагает вам интересные вещи, например. Извлечь в переменную / константу / метод; Объявление разделенной переменной - смотрите другие выше или просто попробуйте на чем угодно
Ctrl + Shift + R найти любой файл в рабочей области, аналогично Ctrl + Shift + T для поиска типов