今日は、Visual Studio 2019 Launch Event in Tokyo で登壇してきました。 資料はこちらです。
www.slideshare.netとりあえず個人的に便利だと思ってる機能とかを中心に色々話したのですが、その中で一つだけ覚えてもらいたい機能として Ctrl + .
のショートカットを紹介しました。
何が起きるの?
クイックフィックスを起動するショートカットになります。マウス操作でいうところの電球マークをクリックする操作になります。
出来ること
色んなことが出来ます。
名前変更
前にも書きましたが編集名やクラス名の変更が出来ます。
変えたい変数やクラス名を普通に変更して Ctrl + .
を押して Enter。
個人的には Ctrl + R, Ctro + R
より好き。
コンストラクターの生成から、引数を格納するフィールドやプロパティの生成
まずは、コンストラクターの生成。クラス名のところで Ctrl + .
です。
そしてコンストラクターの引数を追加して Ctrl + .
でプロパティを生成して代入
public に公開する必要がなければフィールドに格納という選択も可能です。
さらに null チェックや、文字列の場合は空文字チェックなどが追加できます。
クラス名をファイル名に合わせる
例えば Person クラスを作って Employee クラスにリネームしたいときにはクラス名を変えて、ファイル名を変えて…といった感じの作業が必要です。 これがファイル名とクラス名があってないとクラス名をファイル名に合わせて変えてくれます。
名前空間をフォルダー名に合わせる
例えば今までプロジェクトのルート名前空間に置いといたとして、数が増えてきて名前空間をわけたいときとかファイルをフォルダーに移動して名前空間を修正します。
これがフォルダーに移動したあと、該当ファイルの名前空間のところで Ctrl + .
をするとフォルダー名に合わせてくれます。
インターフェースや抽象メソッドの実装
インターフェースや抽象クラスを実装したり継承すると、クラスにメソッドを実装しないといけません。
これも Ctrl + .
で実装してくれます。
クラスの using の補完
まだ using してない名前空間のクラス名を入力したら Ctrl + .
で using が追加できます。
不要な using の削除
using でいらないものがたくさんあるときに消してくれます。
拡張メソッドに必要な using の追加
LINQ とかの Where や Select みたいな拡張メソッドも using が足りないと追加してくれます。
メソッドのシグネチャーの変更
引数の順番が気に入らないな…というときも
LINQ にしてやんよ
foreach だと…?
新しい書き方への変換
LINQ への変換もそうですが、例えば最近追加されたタプルや、破棄といった書き方への変換も対応しています。
他にも throw 式への変換とか
メソッドボディが 1 ステートメントしかないときは =>
への変換とか。
逆の方向への変換もしてくれるので、とりあえず 1 ステートメントのときは式木体にしておいて、処理追加のタイミングで Ctrl + .
で普通の { ... }
に戻して処理追加とかできます。
存在しないメソッドやプロパティの生成
存在しないメソッドやプロパティを呼ぶコードを書いたら生成してくれます。
typo の修正
軽い typo なら修正してくれます。例えば以下の例では Initialize
と InitOlize
と typo したのを修正してくれてます。
NuGet の参照の追加
NuGet で、まだ参照に追加してないクラスを使うと参照の追加もしてくれます。(どの範囲を検索してくれてるのかはちょっと未確認ですが…) 例えば Json.NET の JsonConvert を使おうとして、まだ NuGet 追加してないのですが追加してくれてます。参照追加後、ちゃんと using も追加してくれてます。
プロパティをメソッドに変換
書いてる途中に気づいたのですが、プロパティをメソッド呼び出しにしてくれます。あまり使わないのですが副作用のある getter を作ってしまったときとかはメソッドにすることもあるかな??
ということでまとめ
普段あまり使わない機能もありますが(LINQ へ変換とか…) 、普段コードを書いてるとき結構な頻度で Ctrl + .
で Visual Studio にコードを書いてもらってます。
もう、電球が出る前に Ctrl + .
を押して Enter をしてコードを生成してるので、素早くやると何もしてないのにコードが生えてきたみたいに見えることもあるかも?
とりあえず色々楽できる、個人的に一番費用対効果の高いショートカットです。是非使ってみてください。