• C#中this的用法,你用过几种?【含源码示例】


    C#中的this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。

    • this用法1:限定被相似的名称隐藏的成员

      

        /// <summary>
        /// /******************************************/
        /// /*  this用法1:限定被相似的名称隐藏的成员 */
        /// /******************************************/
        /// </summary>
        /// <param name="Name"></param>
        public Person(string Name, string Sex)
      {
            this.Name = Name;
            this.Sex = Sex;
      }
    

     

     

    • this用法2:将对象作为参数传递到其他方法

    /// <summary>
    ///Person 的摘要说明
    /// </summary>
    public class Person
    {
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { set; get; }
    
        /// <summary>
        /// /*******************************************/
        /// /* this用法2:将对象作为参数传递到其他方法 */
        /// /*******************************************/
        /// </summary>
        public void ShowName()
        {
            Helper.PrintName(this);
        }
    
        
    
    }
    
    /// <summary>
    /// 辅助类
    /// </summary>
    public static class Helper
    {
    
        /// <summary>
        /// 打印人名
        /// </summary>
        /// <param name="person"></param>
        public static void PrintName(Person person)
        {
            HttpContext.Current.Response.Write("姓名:" + person.Name + "<br />");
        }
    
    }
    


     

    • this用法3:声明索引器

         /// <summary>
        /// 其它属性
        /// </summary>
        public NameValueCollection Attr = new NameValueCollection();
    
       /// <summary>
        /// /*************************/
        /// /* this用法3:声明索引器 */
        /// /*************************/
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public string this[string key]
        {
            set
            {
                Attr[key] = value;
            }
    
            get
            {
                return Attr[key];
            }
        }
    

     

    • this用法4:扩展对象的方法
    /// <summary>
    ///Person 的摘要说明
    /// </summary>
    public class Person
    {   /// <summary>    
        /// 性别    
        /// </summary>    
        public string Sex { set; get; }
    }
    
    
    /// <summary>
    /// 辅助类
    /// </summary>
    public static class Helper
    {
    
        /// <summary>
        /// /*****************************/
        /// /* this用法4:扩展对象的方法 */
        /// /*****************************/
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static string GetSex(this Person item)
        {
            return item.Sex;
        }
    }
    

    调用:

    Person person = new Person();
    person.GetSex();
    

     

    四种用法完整代码如下:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Collections;
    using System.Collections.Specialized;
    
    /// <summary>
    ///Person 的摘要说明
    /// </summary>
    public class Person
    {
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { set; get; }
    
        /// <summary>
        /// 性别
        /// </summary>
        public string Sex { set; get; }
    
        /// <summary>
        /// 其它属性
        /// </summary>
        public NameValueCollection Attr = new NameValueCollection();
    
    
        public Person()
        {
        }
    
        /// <summary>
        /// /******************************************/
        /// /*  this用法1:限定被相似的名称隐藏的成员 */
        /// /******************************************/
        /// </summary>
        /// <param name="Name"></param>
        public Person(string Name, string Sex)
    	{
            this.Name = Name;
            this.Sex = Sex;
    	}
    
        /// <summary>
        /// /*******************************************/
        /// /* this用法2:将对象作为参数传递到其他方法 */
        /// /*******************************************/
        /// </summary>
        public void ShowName()
        {
            Helper.PrintName(this);
        }
    
        
        /// <summary>
        /// /*************************/
        /// /* this用法3:声明索引器 */
        /// /*************************/
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public string this[string key]
        {
            set
            {
                Attr[key] = value;
            }
    
            get
            {
                return Attr[key];
            }
        }
    
    }
    
    /// <summary>
    /// 辅助类
    /// </summary>
    public static class Helper
    {
    
        /// <summary>
        /// /*****************************/
        /// /* this用法4:扩展对象的方法 */
        /// /*****************************/
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static string GetSex(this Person item)
        {
            return item.Sex;
        }
    
    
        /// <summary>
        /// 打印人名
        /// </summary>
        /// <param name="person"></param>
        public static void PrintName(Person person)
        {
            HttpContext.Current.Response.Write("姓名:" + person.Name + "<br />");
        }
    
    }
    

    调用示例:

            //this用法1示例
            Person person = new Person("小她", "女");
    
            //this用法2示例
            person.ShowName();
    
            //this用法3示例
            person["Height"] = "175cm";
            Response.Write("身高:" + person["Height"] + "<br />");
            person["Weight"] = "110kg";
            Response.Write("体重:" + person["Weight"] + "<br />");
    
            //this用法4示例
            Response.Write("性别:" + person.GetSex() + "<br />");
    


     

    由于时间关系,就不说太多,如有不足之处,恳请大家批评指正。

    完整示例源码下载https://files.cnblogs.com/foolin/UseThis.rar

     

  • 相关阅读:
    git删除大文件
    正则表达式学习
    python小技巧集锦
    python的编译
    笔记本BIOS按键和启动项选择按键
    Ubuntu 不能识别U盘
    一文读懂Java 11的ZGC为何如此高效
    ELK原理与介绍
    使用uniapp之-在微信小程序内打开腾讯地图app或高德地图app
    使用Git多人协作开发时分支合并流程
  • 原文地址:https://www.cnblogs.com/foolin/p/UsageThis.html
Copyright © 2020-2023  润新知