3

.NET クラス内では、.NET を介してプロパティとメンバーにアクセスしますthis。を使用せずにアクセスした場合の違いは何ですかthis

public class Test
{
    private string _test;

    public Test()
    {
        this.Test = "test";
        // vs. 
        Test = "test";

        // and
        this._test = "test";
        // vs. 
        _test = "test";
    }

    public string Test { get; set; }
}
4

8 に答える 8

2

Thisクラスの変数を参照しているだけです。次のことを試したときにつまずくのを防ぎます。

private string Test;

public Test(String Test)
{
    this.Test = Test;
    // vs. 
    Test = Test;

}

最初のものは正しく動作します。

于 2012-12-18T10:12:38.540 に答える
2

コンパイラにはまったく違いはありません。より読みやすいものを使用してください。thisこれがローカル変数ではなくフィールド/プロパティであることを示すために使用することを好みます。

于 2012-12-18T10:11:01.590 に答える
1

これは、彼と同じ名前のパラメーターを使用するまで違いはありません

public class Test
{
 private string _test;

 public Test(string Test,string _test)
 {
    this.Test = "test";//this refers invoking object Test i.e class varaible
    // vs. 
    Test = "test";//this refer method passed Test param

    // and
    this._test = "test";//this refers invoking object Test i.e class varaible
    // vs. 
    _test = "test";//this refer method passed Test param
}

  public string Test { get; set; }
}

したがって、上記のメソッド パラメータ Test hide class Test prameter では、これを回避するには、クラスの現在のオブジェクトを参照するために this を使用する必要があります

于 2012-12-18T10:12:31.737 に答える
0

コンパイラに違いはありません。あなたにとってより読みやすい方を使用してください。

public class Test 
{ 

private string _test;

public Test(string Test)
{
    this.Test = "test";
    // vs. 
    Test = "test";

    // and
    this._test = "test";
    // vs. 
    _test = "test";
}

  public string Test { get; set; }
}
于 2012-12-18T10:14:25.157 に答える
0

msdn ページをチェックしてください: http://msdn.microsoft.com/en-us/library/dk1507sz(v=vs.80).aspx

C#thisでは、同じ名前の変数とパラメーターがある場合に読みやすさを向上させるために主に使用されます。

于 2012-12-18T10:13:10.930 に答える
0

コードに違いはありませんがthis、スコープを指定するのに役立つ場合があります。

public Test(string _test)
{
    this._test = "test"; // sets class field
    // vs. 
    _test = "test"; // sets ctor parameter
}
于 2012-12-18T10:10:48.870 に答える
0

最終結果に違いはありません。

1 つのことは、これを入力すると、そのクラス内で使用可能なメンバーのみを一覧表示する intellisense が得られることです。

また、メソッドがクラスの拡張メソッドである場合は、これを使用して呼び出す必要があります。

于 2012-12-18T10:11:06.120 に答える
0

使っても使わなくても違いはありthisません。あくまでも読みやすさです。

于 2012-12-18T10:11:14.873 に答える