web-dev-qa-db-ja.com

_で始まる変数名はどういう意味ですか?

C#を使用して最初のasp.net MVCアプリケーションを作成すると、名前がアンダースコア文字(_)で始まる変数がいくつかあります。

これは何を意味するのでしょうか?これには特定の意味がありますか?

37
Niyaz

言語定義の意味はありません。これは、一部の人々がインスタンス変数とローカル変数を区別するために使用する規則にすぎません。その他のバリエーションには、m_foo(およびs_fooまたはg_fooまたは静的変数)またはmFooがあります。あるいは、インスタンス変数の代わりにローカル変数(およびパラメーター)をプレフィックスすることを好む人もいます。

個人的に私はこのようなプレフィックスを使用しませんが、それはスタイルの選択です。同じプロジェクトに取り組んでいる全員が一貫している限り、それは通常大した問題ではありません。私はいくつかの恐ろしく一貫性のないコードを見ました...

59
Jon Skeet

一般に、これはプライベートメンバーフィールドを意味します。

25
Ben Robbins

変数名の前の下線_valは慣例にすぎません。 C#では、パブリックプロパティのプライベートメンバー変数を定義するときに使用されます。

@ Steven Robbins が言ったことに追加します:

private string _val;
public string Values
{
    get { return _val;}
    set {_val = value;}
}
4
Raktim Biswas

多くの人々はそれらをプロパティのプライベート変数(実際にパブリックプロパティの値を格納する変数)に使用します。

4
Steven Robbins

私はこれが少し古いことを知っていますが、誰かがここで終わってしまった場合に備えて、.NETのMVCについて話している場合は、アンダースコアで始まる名前の部分ビューにも命名規則があることをここに追加します。

これは、すべての人が決定に気づいている限り、あなたとあなたのチームが従うかどうかを決めることができる命名規則です。私はそれらを認識するためだけに、プライベートまたは保護されたような非パブリックフィールドでも使用します。

これについて少し説明します さらに読みたい場合。

1
Lalo Téllez

インスタンスプロパティを ''で開始することには別の利点があります。これはIntellisenseで最初に表示されます。
値/モデル/ POCOクラスを作成するときに、 '
'を使用しません。

1

プロパティのプライベート変数にアンダースコアを使用すると、クラス自体のプロパティではなく、変数を誤って呼び出す可能性がある状況を回避できます。 (簡単な小文字のインテリセンス入力で簡単に行えます)

プロパティget {}内で何らかの形の計算または集計を行う場合、プロパティを完全に呼び出すことを意図している場合、最後に実行する必要があります。

1
Hamish Anderson

関数の残りの部分からそれらを「隠す」方法として使用されていないパラメーターの変数名として使用されるのを見てきました。

これは良いことでも悪いことでもありませんが、関数でパラメーターが使用されないことを示すのに効果的でした。

0
ShuggyCoUk