##知りたいこと
C#において、this修飾子にはクラスの現在のインスタンスを参照することを明示的に表す用法がありますが、このthisの是非に関する一般的な見解はどのようなものでしょうか。
・つけるべき
・つけるべきではない
・どちらでもよい
上記のいずれかになるかと思いますが、
それ以外でも構いません。
理由や根拠、場合によっては情報ソースも含めてください。
回答よろしくお願い致します。
##補足
Visual Studio 2015は、thisを明示的に付与すると「名前を簡略化できます。」というヒントを出すのですが、Resharperはデフォルトでthisをつけるよう警告を出すため、このような疑問に至りました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
![guest](/img/icon/icnUserSample.jpg)
回答4件
0
ベストアンサー
個人の好みが強くでる話題のため、絶対的な正解は存在しないでしょう。
C#言語発祥の地、Microsoft社内では「常にthisを明記する」らしいです(真偽のほどは不明ですが)。MSDNフォーラムにあった C# Naming Convention and Guidelines regarding "this" keyword から引用します。
Microsoft's own internal standard is to always prefix with "this.", if that sways you in any way.
個人の好みはさておき、より重要なのはコードを共有する人が同じコーディング規約を使うことです。
Whatever your opinion, the important thing is that all people closely collaborating on a project use the same formatting standards, irrespective of what those standards are.
よそのQ&Aサイト(StackOverflow)にも同じ質問がありますが、かなり意見が割れていますね。
投稿2016/09/06 03:43
編集2016/09/06 03:52総合スコア6191
0
こんにちは。
メンバ変数と引数に同じ名前を付けた時、thisで判別しているケースを良く見かけますね。
そのためにはメンバ変数アクセス全てにthisを付けないと訳が判らなくなりやすいです。
私はこの用法には賛成できません。thisを付けそこなった時にエラーがでないし、見た目にも分かりやすいとは限らないですから。(引数と被るものだけthisを付けると引数なのかメンバなのか判りづらいです。)
文が長くなるのも嫌ですね。
私は必要な時以外thisは使いません。
引数とメンバ変数ではプリフィックスを変えてます。間違えたらエラーになるのでちょっと安心です。
「一般的な見解」かどうか把握していませんが、たぶん同様に感じている人は少なくないのでは?
ここは、C++の入門解説ですが「thisを使う必要がない場所でthisポインタを使う人はいません」とまで言い切ってます。
【追記】
なかなか検索で引っかからないのですが、こんな見解が見つかりました。私と同様な見解でした。
逆のthisを付ける積極的なメリットがなんなのか私も知りたいです。
文が長くなると言うデメリットをひっくり返すメリットがあるなら、参考にしたいですし。
投稿2016/09/06 03:29
編集2016/09/06 04:05総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
![guest](/img/icon/icnUserSample.jpg)
0
こんにちは。
this付けない派が多いようなので……自分は全てthis付ける派ですね。
正しくは、メンバー変数とプロパティへのアクセスには全てthis付け、メソッド呼び出しにはthis無しって感じです。
実際のところ、thisを付けることで動作が変わる場面が一部存在するくらいで、普段付けるか付けないかは規約が設けられている場合でなければ完全に趣味の話になるので、コーディングしているときの書き心地の良さ、後でコードを見直した時の見やすさなど、いろいろ書いてみてから自分で良いと思ったスタイルに統一すればいいのです。感覚がつかめないうちは、とりあえず全てにthisを付けてみるのもいいかもしれません。
ちなみに、自分がthis付ける派なのは、メンバー参照は出来る限り控えるべきだというコーディング思想の元で、参照箇所をより強調したいという意図があるからです。趣味です。
投稿2016/09/06 05:50
総合スコア4162
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
![guest](/img/icon/icnUserSample.jpg)
0
私はthisはつけない派です。
インスタンス変数でもプロパティを使います。すると、C#の一般的は書き方では、プロパティは大文字で始まり、変数は小文字で始まるので、必要を感じないのです。何より、短いコードが好みです。
オブジェクト指向に慣れていない人に向けて書く際は、(特にコンストラクタでは)thisをつけるかもしれません。そちらのほうがインスタンス変数というのが判りやすいという点は否めません。
投稿2016/09/06 04:26
総合スコア2883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/06 03:46
2016/09/06 04:59