this 3个月前

编程语言
457
this

使用 this 关键字来表示当前对象,日常开发中我们可以使用 this 关键字来访问类中的成员属性以及函数。不仅如此 this 关键字还有一些其它的用法,下面就通过一些示例来分别演示一下。

1) 表示当前类的对象

using System;
namespace thistmp
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Website site = new Website("hellowrold.net","https://www.helloworld.net");
            site.Display();
        }
    }
    public class Website
    {
        private string name;
        private string url;
        public Website(string n, string u){
            this.name = n;
            this.url = u;
        }
        public void Display(){
            Console.WriteLine(name +" "+ url);
        }
    }
}

运行结果如下:

hellowrold.net https://www.helloworld.net

2) 串联构造函数

using System;
namespace hhh
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Test test = new Test("test");
        }
    }
    public class Test
    {
        public Test()
        {
            Console.WriteLine("无参构造函数");
        }
        // 这里的 this()代表无参构造函数 Test()
        // 先执行 Test(),后执行 Test(string text)
        public Test(string text) : this()
        {
            Console.WriteLine(text);
            Console.WriteLine("实例构造函数");
        }
    }
}

运行结果如下:

无参构造函数
test
实例构造函数

3) 作为类的索引器

using System;
namespace hhh
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Test a = new Test();
            Console.WriteLine("Temp0:{0}, Temp1:{1}", a[0], a[1]);
            a[0] = 15;
            a[1] = 20;
            Console.WriteLine("Temp0:{0}, Temp1:{1}", a[0], a[1]);
        }
    }
    public class Test
    {
        int Temp0;
        int Temp1;
        public int this[int index]
        {
            get
            {
                return (0 == index) ? Temp0 : Temp1;
            }
    
            set
            {
                if (0==index)
                    Temp0 = value;
                else
                    Temp1 = value;
            }
        }
    }
}

运行结果如下:

Temp0:0, Temp1:0
Temp0:15, Temp1:20

4) 作为原始类型的扩展方法

using System;
namespace hhhh
{
    class Demo
    {
        static void Main(string[] args) 
        {
            string str = "str";
            string newstr = str.ExpandString();
            Console.WriteLine(newstr);
        }
    }
    public static class Test
    {
        public static string ExpandString(this string name)
        {
            return name+" imstr2";
        }
    }
}

运行结果如下:

str imstr2
image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2223262
累计阅读

热门教程文档

Vue
25小节
Lua
21小节
Golang
23小节
Next
43小节
React Native
40小节