C\#에서 this 의 용법 모음 집

6776 단어 C#이 용법
this 키워드 참조 클래스 의 현재 인 스 턴 스 는 확장 방법의 첫 번 째 매개 변수 인 수정자 로 도 사용 할 수 있 습 니 다.다음은 this 의 네 가지 용법 에 대해 간단 한 정 리 를 하 겠 습 니 다.
우선,우 리 는 각각 User 와 VIP 두 개의 C\#클래스 를 만 듭 니 다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace AppConsole
{
 
  /// <summary>
  ///     
  /// </summary>
  public class User
  {
    /// <summary>
    ///     
    /// </summary>
    Dictionary<string, object> dictInfo = null;
 
    /// <summary>
    ///    
    /// </summary>
    public User()
    {
      dictInfo = new Dictionary<string, object>();
    }
 
    /// <summary>
    ///       
    /// </summary>
    /// <param name="UserID"></param>
    /// <param name="UserName"></param>
    public User(int UserID, string UserName)
    {
      this.UserName = UserName;
      this.ID = UserID;
    }
 
    /// <summary>
    /// this, 【1】   ,   
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
    public object this[string name]
    {
      get { return dictInfo[name]; }
      set { dictInfo[name] = value; }
    }
 
 
    /// <summary>
    ///   
    /// </summary>
    public int ID { get; set; }
 
 
    /// <summary>
    ///    
    /// </summary>
    public string UserName { get; set; }
 
    /// <summary>
    /// this 【2】   ,      
    /// </summary>
    public void Said()
    {
      new VIP().Say(this);
    }
 
  }
 
  /// <summary>
  ///   
  /// </summary>
  public class VIP : User
  {
 
 
    /// <summary>
    ///   
    /// </summary>
    public int integral { get; set; }
 
    /// <summary>
    ///     
    /// </summary>
    public VIP()
    {
      ID = 520;
      integral = 1000;
    }
 
    /// <summary>
    /// this 【3】   ,  this()        
    /// </summary>
    /// <param name="UserName"></param>
    public VIP(string UserName)
      : this()
    {
      this.UserName = UserName;
    }
 
    /// <summary>
    ///       
    /// </summary>
    /// <param name="UserID"></param>
    /// <param name="UserName"></param>
    public VIP(int UserID, string UserName)
      : base(UserID, UserName)
    {
 
    }
 
    /// <summary>
    ///Say  
    /// </summary>
    /// <param name="user"></param>
    public void Say([LCQAttribute] User user)
    {
      Console.WriteLine(string.Format(" ,   !     {0},      {1}!", user.ID, user.UserName));
    }
 
  }
 
  /// <summary>
  ///    ,   User 
  /// </summary>
  public static class Helper
  {
 
    /// <summary>
    ///  【4】   : this  User 
    /// </summary>
    /// <param name="user"></param>
    public static void Sing(this User user)
    {
      Console.WriteLine(string.Format(" ,   !     {0},      {1}!", user.ID, user.UserName));
    }
  }
 
  /// <summary>
  ///    :                
  /// </summary>
  [System.AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)]
  public class LCQAttribute : System.Attribute
  {
 
  }
}

this 제[1]종 용법,색인 기

/// <summary>
///     
/// </summary>
Dictionary<string, object> dictInfo = null;
 
/// <summary>
/// this, 【1】   ,   
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public object this[string name]
{
  get { return dictInfo[name]; }
  set { dictInfo[name] = value; }
}

this 제[2]종 용법,매개 변수 로 전달

/// <summary>
/// this 【2】   ,      
/// </summary>
public void Said()
{
  new VIP().Say(this);
}

this 제[3]종 용법,this()를 통 해 무 참 구조 함 수 를 호출 합 니 다.

/// <summary>
/// this 【3】   ,  this()        
/// </summary>
/// <param name="UserName"></param>
public VIP(string UserName)
  : this()
{
  this.UserName = UserName;
}

this 제[4]종 용법:확장 User 클래스

/// <summary>
///    ,   User 
/// </summary>
public static class Helper
{
 
  /// <summary>
  ///  【4】   : this  User 
  /// </summary>
  /// <param name="user"></param>
  public static void Sing(this User user)
  {
    Console.WriteLine(string.Format(" ,   !     {0},      {1}!", user.ID, user.UserName));
  }
}

마지막 으로 콘 솔 테스트

/// <summary>
///      
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
 
  //0>    
  User user = new User();
  user.ID = 1;
  user.UserName = "lichaoqiang";
 
  // 【 】   :this      public object this[string name]{……}
  user["UserID"] = 1;
  Console.WriteLine(" 【 】   :this     ");
 
  // 【 】   :this       user.Say(this);
  Console.WriteLine(" 【 】   :this      ");
  user.Said();
 
  // 【 】   :this() public VIP:this(){  }
  VIP vip = new VIP("yezi");
  vip.Said();
  Console.WriteLine(" 【 】   :this()");
 
  // 【 】   : this  VIP  public static Sing(this User user){……}
  Console.WriteLine(" 【 】   : this  VIP ");
  user.Sing();
 
 
  Console.Read();
 
}

최종 결과 설명도

이상 에서 말 한 것 이 본문의 전부 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기