C#学习系列-this的使用

原文:C#学习系列-this的使用

如有错误,欢迎指正。

1.代表当前类,在当前类中可使用this访问当前类成员变量和方法(需要注意的是 静态方法中不能使用this),也可用于参数传递,传递当前对象的引用。

下面贴代码:

    class Program
    {
        static void Main(string[] args)
        {
            thisClass testObj = new thisClass();
            Console.ReadLine();
        }
    }

    class thisClass
    {
        private string A { get; set; }
        public thisClass()
        {
            /*当前类this 访问类中属性A 静态方法无法访问A属性*/
            this.A = "Test String";
            Console.WriteLine(this.TestFun("TestFun :"));
        }
        private string TestFun(string args)
        {
            return args + this.A;
        }
    }

2.声明索引器

索引器:允许类和结构的实例按照与数组相同的方式进行索引,索引器类似与属性,不同之处在于他们的访问器采用参数,被称为有参属性,索引可以被重载,属于实例成员,不能声明为static。

下面贴代码:

    class Program
    {
        static void Main(string[] args)
        {
            indexClass intIndexClass = new indexClass();
            intIndexClass[0] = new thisClass("intIndexClass 111");
            intIndexClass[1] = new thisClass("intIndexClass 222");
            indexClass stringIndexClass = new indexClass();
            stringIndexClass["string1"] = new thisClass("stringIndexClass string1");
            stringIndexClass["string2"] = new thisClass("stringIndexClass string2");
            Console.ReadLine();
        }
    }

    class indexClass
    {
        /*声明属性*/
        private thisClass[] thisClassArr = new thisClass[10];
        private Hashtable thisClassStrArr = new Hashtable();
        /*创建索引器1 索引可以被重载,属于实例成员,不能声明为static*/
        public  thisClass this[int index]
        {
            get { return thisClassArr[index]; }
            set { this.thisClassArr[index] = value; }
        }
        /*创建索引器2*/
        public thisClass this[string index]
        {
            get
            {
                return thisClassStrArr[index] as thisClass;
            }
            set { this.thisClassStrArr[index] = value; }
        }
    }

    class thisClass
    {
        private string A { get; set; }
        public thisClass(string str)
        {
            /*当前类this 访问类中属性A 静态方法无法访问A属性*/
            this.A = str;
            Console.WriteLine(this.TestFun("TestFun :"));
        }
        private string TestFun(string args)
        {
            return args + this.A;
        }
    }

3.用于扩展方法

扩展方法的要素: 
1.此方法必须是一个静态方法 
2.此方法必须放在静态类中 
3.此方法的第一个参数必须以this开头,并且指定此方法是扩展自哪个类型

public static string DateToString(this DateTime dt)
{
      return dt.ToString("yyyy-mm-dd hh:mm:ss");
} 

static void Main(string[] args)
{
      DateTime now = DateTime.Now;
      string time = now.DateToString();
      Console.WriteLine(time);
      Console.ReadKey();
} 

 

 

 我看了好像就这么多,其他还有补充的没?

时间: 2024-11-16 18:45:24

C#学习系列-this的使用的相关文章

ExtJs2.0学习系列(2)--Ext.Panel

上一篇文章ExtJs2.0学习系列(1)--Ext.MessageBox ,受到了大家的褒贬不一,还是有的朋友提出好的建议,在此表示感谢! 今天介绍extjs中的Panel组件. //html代码 <div id="container"> </div> //js代码 var p = new Ext.Panel({ title: 'My Panel',//标题 collapsible:true,//右上角上的那个收缩按钮,设为false则不显示 renderTo:

ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇)

前言:说句实话,此extjs系列的文章在博客园中的热度不高,可能是学这玩意的人不多吧,但是我觉得有这么个系列的文章对于中国朋友非常有帮助!请大家支持! 上篇ExtJs2.0学习系列(5)--Ext.FormPanel之第二式中我们讨论了下fieldset和表单验证的知识,今天我们接着深入解析表单元素中ComboBox组件的使用.会涉及 到.net简单服务器数据交互,但暂不做深入讨论,以后会详细分析服务器交互相关,不过可能要等较长一段时间,呵呵! 5.服务器数据作为ComboBox的数据源实例 首

JAVA/JSP学习系列之八(改写MySQL翻页例子)

js|mysql|翻页 一.前言 其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源.我用Orion试的,将本站<JAVA/JSP学习系列之六(MySQL翻页例子) > 简单改写了一下. 二.配置 (1)JDBC 需要将用到的JDBC驱动Copy到[ORION]/lib目录下 (2)data-source 在[ORION]/config/data-sources.xml文件中加入如下: 〈data-source class="com.e

ExtJs2.0学习系列

ExtJs2.0学习系列(15)--extjs换肤 ExtJs2.0学习系列(14)--Ext.TreePanel之第三式(可增删改的树) ExtJs2.0学习系列(13)--Ext.TreePanel之第二式 ExtJs2.0学习系列(12)--Ext.TreePanel之第一式 ExtJs2.0学习系列(11)--Ext.XTemplate ExtJs2.0学习系列(10)--Ext.TabPanel之第二式 ExtJs2.0学习系列(9)--Ext.TabPanel之第一式 ExtJs2.

ExtJs2.0学习系列(12)--Ext.TreePanel之第一式

今天开始,我们就开始一起学习TreePanel了,道个歉,上篇的代码很乱阿. 我总是喜欢用最简单的例子开始,去理解最基本的使用方法,减少对i后面高级使用的干扰! TreePanel是继承自Panel,所以很多在Panel中谈到的属性这里可能会一笔带过,如有问题,请参考ExtJs2.0学习系列(2)--Ext.Panel 1.第一个静态树--最简单的树 效果图: html代码: <div id="container"> </div> js代码: Ext.onRea

ExtJs2.0学习系列(3)--Ext.Window

前面介绍了panel组件--ExtJs2.0学习系列(2)--Ext.Panel,今天将介绍window组件,它继承自panel. 先介绍个最简单例子 //html代码 <div id="win" class="x-hidden"> </div> //js代码 var w=new Ext.Window({ contentEl:"win",//主体显示的html元素,也可以写为el:"win" width

Gradle学习系列之一——Gradle快速入门(转)

  这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin   请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git     和Maven一样,Gradle只是提供了构建项目的一

Asp.Net MVC5入门学习系列⑤

原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体      前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的话就简单的看下它默认实现的代码,VS终归强大,但是方便的同时也是在弱化我们,当然大牛级别的这样搞是为了效率,我们新手的话还是建议不要去偷那个懒,至于为什么?不解释啦.....    我们打开我们的创建的实体对象Movie类,然后再ReleaseDate属性上添加一些标识特性,具体如下:  

Python爬虫学习系列教程

Python版本:2.7 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库的高级用法 5. Python爬虫入门五之URLError异常处理 6. Python爬虫入门六之Cookie的使用 7. Python爬虫入门七之正则表达式 二.爬虫实战 1. Python爬虫实战一之爬取糗事百科段子 2. Python爬虫实战二之爬取百度贴吧帖子 3. Py

Asp.Net MVC5入门学习系列②

原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器)    因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用来便于我们的开发,要是对MVC概念还有点模糊的,可以去我以前写的第一话 Asp.Net MVC 3.0[Hello World!]里开始部分就对此做了阐述.假定所有跟我一起学的都了解MVC的这么一个概念,我们就开始下面的步骤了: 现在我们开始添加一个Controller,具体如下: 我们选择创