C# this关键字的3种用法

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } }}


以上是关于C# this关键字的3种用法的主要内容,如果未能解决你的问题,请参考以下文章

C# WPF This用法详解(经典)

在 C# 中,我遇到了一个我不理解的关键字“this”的用法[重复]

.NET(C#)new关键字的三种用法

2018年-2019年第二学期第二周C#学习个人总结

C#中的using关键字用法总结

C# new用法总结