加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – String.Format扩展方法

发布时间:2020-12-15 04:36:05 所属栏目:百科 来源:网络整理
导读:我有: public static string Format(this string text,params object[] args){ return string.Format(text,args);} 所以我可以这样做: "blablabla {0}".Format(variable1); 这是好事还是坏事?它会变得更短吗?我希望无缝地构建字符串,比如编写文本而不必
我有:
public static string Format(this string text,params object[] args)
{
   return string.Format(text,args);
}

所以我可以这样做:

"blablabla {0}".Format(variable1);

这是好事还是坏事?它会变得更短吗?我希望无缝地构建字符串,比如编写文本而不必担心参数和内容之前或之后:

// bad
return "date: " + DateTime.Now.ToString("dd.MM.yyyy") + "ntime: " + DateTime.Now.ToString("mm:HH:ss") + "nuser: " + _user + " (" + _status + ")";

// better,but you have to deal with order of {0}...{n} and order of parameters
return string.Format("date: {0}ntime: {1}user: {2} ({3})",...);

// ideal
return "date: {DateTime.Now{dd:MM:yyyy}}ntime: {...}nuser: {_user} ({_status})";

解决方法

好吧,有一件坏事就是只有一个params object []方法,你会强制每次调用额外的数组分配.

您可能会注意到string.Format有一系列重载用于获取少量参数(这些是非常常用的) – 我建议复制它们.

您的“理想”场景可以通过重写string.Format方法来完成,但您需要传入值,即

return "date: {date}ntime: {...}nuser: {_user} ({_status})"
     .Format(new { date = DateTime.Now,_user,_status });

(并使用您自己的自定义格式方法,或one like this) – 但请注意,这会强制每次调用一个新的对象实例.

实际上,单声道编译器在某一点上有一个实验标志来直接启用它.我不知道它是否得到维护.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读