当前位置: 首页 > news >正文

个人网站可以如果做淘宝客免费模板简历表格

个人网站可以如果做淘宝客,免费模板简历表格,北京网站建设公司完美湖南岚鸿首 选,网站建设中搜索引擎的作用今天#xff0c;我在写C#代码时#xff0c;突然发现一个最熟悉的陌生人 —— string.Format。在写C#代码的日子里#xff0c;与它朝夕相伴#xff0c;却没有真正去了解它。只知道在字符串比较多时#xff0c;用它比用加号进行字符串连接效率更高#xff08;当然也更方便我在写C#代码时突然发现一个最熟悉的陌生人 —— string.Format。在写C#代码的日子里与它朝夕相伴却没有真正去了解它。只知道在字符串比较多时用它比用加号进行字符串连接效率更高当然也更方便。可是却从来没有问过为什么 在生活中也有类似的现象与你朝夕相处、你最熟悉的人你往往不会进一步去了解她他你已经习惯了她他你认为你已经太了解她他了。。。真的是这样吗这值得去思考。。。 博问中的一个问题 —— StringBuilderString.concat()StringString 哪一个效率高  激发了我的好奇心想一探string.Format的究竟而且在开发中也正好遇到一个字符串连接的问题。 了解.NET世界中的东西其实很简单只要通过工具反编译出相应的.NET类库代码我们来看看string.Fomat的代码 public static string Format(string format, object arg0, object arg1, object arg2){if (format null)throw new ArgumentNullException(format);return string.Format((IFormatProvider) null, format, arg0, arg1, arg2);} 实际调用的是另外一个签名的string.Format public static string Format(IFormatProvider provider, string format, params object[] args){if (format null || args null)throw new ArgumentNullException(format null ? format : args);StringBuilder stringBuilder new StringBuilder(format.Length args.Length * 8);stringBuilder.AppendFormat(provider, format, args);return ((object) stringBuilder).ToString();} 哦原来用的就是StringBuilder也许你早就知道了string.Format只是StringBuilder的改装精简版。 既然是StringBuilder它必然无法避免一个影响StringBuilder性能的问题 —— 初始化容量capacity的问题string.Format是如何解决的呢从上面的代码一眼就可以看出初始化容量是这么计算出来的 format.Length args.Length * 8 从这个计算公式可以看出假设需要format的字符串是10个如果这10字符串累加起来的字符数不超过80就能发挥StringBuilder的最佳性能否则StringBuider需要扩容从而带来性能损失。 所以对于大字符串string.Format不是最佳选择。 那最佳选择是什么还是StringBuilder只不过要自己写代码计算初始化容量。分享一下今天我们在实际开发中使用的代码 var bodyFormat span id\comment_body_{0}\{1}/spanbr/; var diggFormat a href\javascript:void(0);\ οnclick\voteComment({0},Digg)\支持({2})/a; var buryFormat a href\javascript:void(0);\ οnclick\voteComment({0},Bury)\反对({3})/a; var args new string[]{ comment.ID.ToString(), comment.Body, comment.DiggCount.ToString(), comment.BuryCount.ToString() }; //计算初始化容量 int capacity bodyFormat.Length diggFormat.Length buryFormat.Length; for (int i 0; i args.Length; i) {capacity args[i].Length; } var sb new StringBuilder(capacity); sb.AppendFormat(bodyFormat,args); sb.AppendFormat(diggFormat,args); sb.AppendFormat(buryFormat,args); Post.Text sb.ToString(); 这里没有使用string.Format一是因为comment.Body的字符数会很多string.Format分配的初始化容量不够。二是因为string.Format不能分批Fomat格式字符串只能写在一起造成格式字符串很长也就是bodyFormat, diggFormat, buryFormat要拼成一个字符串。 麻烦主要在参数字符串(args)的长度计算要将每个字符串的字符数进行累加。我们采用的方法是将所有参数放在string[]类型的变量中通过遍历数组进行计算然后将这个string[]类型的变量直接传给StringBuilder.AppendFormat它支持的参数类型是object[]。 小结 写这篇博文不是为让你弃用string.Format而是让你了解它所存在的限制在某些性能要求极高的场景下可以考虑到这个影响因素。 更新 针对这个问题实现了两个扩展方法。 1. 针对单个格式字符串 namespace System {public static class StringExtension{public static string FormatWith(this string format, params object[] args){if (format null || args null){throw new ArgumentNullException((format null) ? format : args);}else{var capacity format.Length args.Where(a a ! null).Select(p p.ToString()).Sum(p p.Length);Console.WriteLine(capacity);var stringBuilder new StringBuilder(capacity);stringBuilder.AppendFormat(format, args);return stringBuilder.ToString();}} } } 调用示例 welcome to {0}! welcome to {1}!.FormatWith(www.cnblogs.com, q.cnblogs.com); 2. 针对多个格式字符串 namespace System {public static class StringExtension{public static string FormatWith(this IEnumerablestring formats, params object[] args){if (formats null || args null){throw new ArgumentNullException((formats null) ? formats : args);}else{var capacity formats.Where(f !string.IsNullOrEmpty(f)).Sum(f f.Length) args.Where(a a ! null).Select(p p.ToString()).Sum(p p.Length);var stringBuilder new StringBuilder(capacity);foreach (var f in formats){if (!string.IsNullOrEmpty(f)){stringBuilder.AppendFormat(f, args);}}return stringBuilder.ToString();}}} } 调用示例 new string[] { welcome to {0}!, welcome to {1}! }.FormatWith(www.cnblogs.com, q.cnblogs.com); 前面使用StringBuilder的代码改为调用扩展方法 Post.Text new string[]{ span id\comment_body_{0}\ class\blog_comment_body\{1}/spanbr/,a href\javascript:void(0);\ class\comment_vote\ οnclick\voteComment({0},Digg)\支持({2})/a,a href\javascript:void(0);\ class\comment_vote\ οnclick\voteComment({0},Bury)\反对({3})/a }.FormatWith(comment.ID, comment.Body, comment.DiggCount, comment.BuryCount);
http://www.yutouwan.com/news/396648/

相关文章:

  • 网站开发薪资删除wordpress网页无用
  • 石家庄专业制作网站个人网站能不能做论坛
  • 网站参考页面设计wordpress导航目录
  • 展示系统 网站模板免费下载长沙市建设局网站
  • 怎么免费给自己建网站wordpress 煎蛋网插件
  • 网页设计与网站建设试卷wordpress新闻插件
  • 网站上线有什么线上活动可以做枣庄手机网站建设电话
  • 网站备案需要收费么大英做网站
  • 不再更新的网站深圳广告公司集中在哪里
  • 网站建设公司高端网站建设销售实训报告
  • 网站响应式与电脑版有什么区别橙色企业网站源码
  • 网站浮动窗口怎么设置公会网站免费建设
  • wordpress 文章目录西安seo网站设计公司
  • p2p网站建设说明书qq直接登录网站无需下载
  • 上海医疗网站建设沈阳企业网站制作哪家好
  • 网站设计 广州百度快照不更新怎么办
  • 网站建设图片教程视频昆明做网站建设怎么样
  • 潍坊网站排名优化wordpress插件储存目录
  • 网站导航栏设计wordpress搜索标题
  • 没有公司自己做网站微信小程序开发文档
  • 做网站成功的企业服务器一年多少钱
  • 做网站_你的出路在哪里怎样做违法网站
  • 南宁建网站公司就去云尚网络工商注册是什么意思
  • 室内设计网站有哪些知乎中国互联网巨头有哪些
  • 湛江建设免费网站巨量千川广告投放平台
  • 做宣传 为什么要做网站那智能小程序平台
  • 选择响应式网站网站建设一般步骤
  • 重庆定制型网站建设项目流程管理软件
  • seo网站网站建设技术指标
  • 广州网站优化公司如何wordpress关键词屏蔽