程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎概念二十五問(10)

C#基礎概念二十五問(10)

編輯:關於C語言

10.this 關鍵字的含義?

答:

this 是一個保留字,僅限於構造函數和方法成員中使用

在類的構造函數中出現表示對正在構造的對象本身的引用,在類的方法中出現表示對調用該方法的對象的引用,在結構的構造上函數中出現表示對正在構造的結構的引用,在結構的方法中出現表示對調用該方法的結果的引用

this 保留字不能用於靜態成員的實現裡,因為這時對象或結構並未實例化

在 C# 系統中,this 實際上是一個常量,所以不能使用 this++ 這樣的運算

this 保留字一般用於限定同名的隱藏成員、將對象本身做為參數、聲明索引訪問器、判斷傳入參數的對象是否為本身

示例:

using System;
using System.Collections.Generic;
using System.Text;
namespace Example10
{
  class Class1
  {
    private double c;
    private string value;
    public double C
    {
      get
      {
        return c;
      }
    }
    public Class1(double c)
    {
      //限定同名的隱藏成員
      this.c = c;
    }
    public Class1(Class1 value)
    {
      //用對象本身實例化自己沒有意義
      if (this != value)
      {
        c = value.C;
      }
    }
    public override string ToString()
    {
      //將對象本身做為參數
      return string.Format("{0} Celsius = {1} Fahrenheit", c, UnitTransClass.C2F(this));
    }
    //由於好奇,在這做了一個效率測試,想看看到底哪種方式訪問成員變量更快,結論:區別不大。。。
    public string Test1()
    {
      long vTickCount = Environment.TickCount;
      for (int i = 0; i < 10000000; i++)
        this.value = i.ToString();
      return string.Format("Have this.: {0} MSEL", Environment.TickCount - vTickCount);
    }
    public string Test2()
    {
      long vTickCount = Environment.TickCount;
      for (int i = 0; i < 10000000; i++)
        value = i.ToString();
      return string.Format("Don't have this.: {0} MSEL", Environment.TickCount - vTickCount);
    }
  }
  class UnitTransClass
  {
    public static double C2F(Class1 value)
    {
      //攝氏到華氏的轉換公式
      return 1.8 * value.C + 32;
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      Class1 tmpObj = new Class1(37.5);
      Console.WriteLine(tmpObj);
      Console.WriteLine(tmpObj.Test1());
      Console.WriteLine(tmpObj.Test2());
      Console.ReadLine();
    }
  }
}

結果:

37.5 Celsius = 99.5 Fahrenheit

Have this.: 4375 MSEL

Don't have this.: 4406 MSEL

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved