C# this关键字
2021-05-18 14:29
阅读:307
- 首页
- Web开发
- Windows程序
- 编程语言
- 数据库
- 移动开发
- 系统相关
- 微信
- 其他好文
- 会员
首页
> Windows程序 > 详细
C# this关键字
时间:2019-10-26 10:29:24
阅读:88
评论:0
收藏:0
[点我收藏+]
标签:img oda null 扩展方法 ref child adl exe dep
用法一 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(this string Json) { return Json == null ? default(T) : JsonConvert.DeserializeObject (Json); } public static List ToList (this string Json) { return Json == null ? null : JsonConvert.DeserializeObject >(Json); } public static DataTable ToTable(this string Json) { return Json == null ? null : JsonConvert.DeserializeObject
(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 users = new List { 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 (); // 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; } } }
用法四 索引器(基于索引器封装EPList,用于优化大数据下频发的Linq查询引发的程序性能问题,通过索引从list集合中查询数据)
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; namespace MyDemo.Web { ////// EPList 支持为List创建索引 /// /// 类型 public class EPList { #region 成员变量 /// /// 索引 /// private Liststring[]> m_Index = new Liststring[]>(); /// /// 缓存数据 /// private Dictionarystring, List > m_CachedData = new Dictionarystring, List >(); /// /// List数据源 /// private List m_ListData = new List (); /// /// 通过索引值取数据 /// /// 索引字段 /// 字段值 /// public List this[string[] indexFields] { get { string key = string.Join(",", indexFields); if (m_CachedData.ContainsKey(key)) return m_CachedData[key]; return new List (); } } #endregion #region 公共方法 /// /// 创建索引 /// /// 索引字段 public void CreateIndex(string[] indexFields) { if (m_Index.Contains(indexFields)) return; m_Index.Add(indexFields); } /// /// 添加 /// /// 记录 public void Add(T record) { m_ListData.Add(record); m_Index.ForEach(indexFields => { string key = getKey(record, indexFields); if (m_CachedData.ContainsKey(key)) { m_CachedData[key].Add(record); } else { List list = new List { record }; m_CachedData.Add(key, list); } }); } #endregion #region 私有方法 /// /// 获取值 /// /// 记录 /// 字段名 /// private object getValue(T record, string fieldName) { Type type = typeof(T); PropertyInfo propertyInfo = type.GetProperty(fieldName); return propertyInfo.GetValue(record, null); } /// /// 获取Key /// /// 记录 /// 索引字段 private string getKey(T record, string[] indexFields) { Liststring> values = new Liststring>(); foreach (var field in indexFields) { string value = Convert.ToString(getValue(record, field)); values.Add(field + ":" + value); } return string.Join(",", values); } /// /// 获取Key /// /// 索引字段 /// 字段值 /// private string getKey(string[] indexFields, object[] fieldValues) { if (indexFields.Length != fieldValues.Length) return string.Empty; for (int i = 0; i ) { fieldValues[i] = indexFields[i] + ":" + fieldValues[i]; } string key = string.Join(",", fieldValues); return key; } #endregion } }
给EPList创建索引,并添加数据
private EPListGetEPListData() { EPList eplist = new EPList (); eplist.CreateIndex(new string[] { "ParentId" }); string sql = "select Id,ParentId,Code,Name from SysDepart"; SqlHelper.ExecuteReader(sql, null, (reader) => { SysDepartInfo record = new SysDepartInfo(); record.Id = Convert.ToString(reader["Id"]); record.ParentId = Convert.ToString(reader["ParentId"]); record.Code = Convert.ToString(reader["Code"]); record.Name = Convert.ToString(reader["Name"]); eplist.Add(record); }); return eplist; }
通过索引高效查询数据
////// 获取子节点 /// /// /// private IEnumerable CreateChildren(EPList data, TreeInfo node) { string id = node == null ? "0" : node.id; List childNodes = new List (); // ParentId字段上创建了索引,所以这里就可以通过索引值直接取出下一层子节点数据,避免Linq查询引发的效率问题 var indexValues = new string[] { "ParentId:" + id }; var childData = data[indexValues]; childData.ForEach(record => { var childNode = new TreeInfo { id = record.Id, text = record.Code + " " + record.Name }; childNodes.Add(childNode); childNode.children = CreateChildren(data, childNode); }); return childNodes.OrderBy(record => record.text); }
C# this关键字
标签:img oda null 扩展方法 ref child adl exe dep
原文地址:https://www.cnblogs.com/canyeweiwei/p/11741869.html
踩
(0)
赞
(0)
举报
评论 一句话评论(0)
分享档案
更多>
2021年05月04日
(231)
2021年05月03日 (246)
2021年04月30日 (168)
2021年04月29日 (133)
2021年04月28日 (117)
2021年04月27日 (215)
2021年04月26日 (242)
2021年04月24日 (175)
2021年04月23日 (115)
2021年04月22日 (232)
2021年05月03日 (246)
2021年04月30日 (168)
2021年04月29日 (133)
2021年04月28日 (117)
2021年04月27日 (215)
2021年04月26日 (242)
2021年04月24日 (175)
2021年04月23日 (115)
2021年04月22日 (232)
周排行
更多
- Windows下的Boost库编译 2021-05-04
- FastAPI + Vue 前后端分离 接口自动化测试工具 apiAutoTestWeb 2021-05-04
- SetWindowSubclass 设置窗口子类回调 2021-05-04
- 常用Windows cmd命令 2021-05-04
- Windows 网络管理命令 2021-05-04
- 常用Windows 快捷键 2021-05-04
- Swing组件基础-----按钮(图片、单选、复选) 2021-05-03
- C#继承的简单应用 2021-05-03
- WPF : ControlTemplate和DataTemplate的区别 2021-05-03
- C#中byte[]和byte* 2021-05-03
友情链接
兰亭集智 国之画 百度统计
站长统计 阿里云 chrome插件
关于我们 - 联系我们 - 留言反馈
© 2014 mamicode.com
版权所有
迷上了代码!
评论
亲,登录后才可以留言!