C# this关键字的3种用法

用法一  this代表当前类的实例对象.

namespace Demo{    public class Test    {        private string scope = "全局变量";        public string getResult()        {            string scope = "局部变量";       // this代表Test的实例对象       // 所以this.scope对应的是全局变量        // scope对应的是getResult方法内的局部变量            return this.scope + "-" + scope;        }    }
    class Program    {        static void Main(string[] args)        {            try            {                Test test = new Test();                Console.WriteLine(test.getResult());            }            catch (Exception ex)            {                Console.WriteLine(ex);            }            finally            {                Console.ReadLine();            }
        }    }}

用法二  用this串联构造函数

namespace Demo{    public class Test    {        public Test()        {            Console.WriteLine("无参构造函数");        }        // this()对应无参构造方法Test()     // 先执行Test(),后执行Test(string text)        public Test(string text) : this()        {            Console.WriteLine(text);            Console.WriteLine("有参构造函数");        }    }
    class Program    {        static void Main(string[] args)        {            try            {                Test test = new Test("张三");            }            catch (Exception ex)            {                Console.WriteLine(ex);            }            finally            {                Console.ReadLine();            }        }    }}

用法三  为原始类型扩展方法

namespace Demo{    public static class Extends    {     // string类型扩展ToJson方法        public static object ToJson(this string Json)        {            return Json == null ? null : JsonConvert.DeserializeObject(Json);        }        // object类型扩展ToJson方法        public static string ToJson(this object obj)        {            var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };            return JsonConvert.SerializeObject(obj, timeConverter);        }        public static string ToJson(this object obj, string datetimeformats)        {            var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };            return JsonConvert.SerializeObject(obj, timeConverter);        }        public static T ToObject<T>(this string Json)        {            return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json);        }        public static List<T> ToList<T>(this string Json)        {            return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json);        }        public static DataTable ToTable(this string Json)        {            return Json == null ? null : JsonConvert.DeserializeObject<DataTable>(Json);        }        public static JObject ToJObject(this string Json)        {            return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", ""));        }    }
    class Program    {        static void Main(string[] args)        {            try            {                List<User> users = new List<User>{                    new User{ID="1",Code="zs",Name="张三"},                    new User{ID="2",Code="ls",Name="李四"}                };
                // list转化json字符串                string json = users.ToJson();          // string转化List                users = json.ToList<User>();
                // string转化DataTable                DataTable dt = json.ToTable();            }            catch (Exception ex)            {                Console.WriteLine(ex);            }            finally            {                Console.ReadLine();            }        }    }
    public class User    {        public string ID { get; set; }        public string Code { get; set; }        public string Name { get; set; }    }}