【问题标题】:Is there any reason to use string.Format() with just a string parameter?是否有任何理由仅使用字符串参数使用 string.Format() ?
【发布时间】:2019-05-31 13:25:35
【问题描述】:

我目前正在更新一些工作中的旧代码。我遇到了许多似乎没有理由使用 string.Format() 的行。我想知道在没有附加参数的情况下使用 string.Format() 是否有一些用处,但我想不出。

这有什么区别:

string query = String.Format(@"select type_cd, type_shpmt from codes");

还有这个:

string query = "select type_cd, type_shpmt from codes";

我也不认为@ 是必需的,因为它不需要是字符串文字,也不是多行字符串。

【问题讨论】:

  • 简答:否
  • 没有。有人在编写代码后没有校对。
  • 它在哪里使用是有原因的。那是什么原因?原作者是否将参数值连接到sql语句?示例:string.Format("Select something from table where column = {0}", value1); ?如果是这样,这就是您要集中精力的地方,因为这会暴露代码中的 sql 注入漏洞。
  • 就我个人而言,我确实 @-verbatimize 我的字符串文字以向我自己表明一个字符串 not 需要翻译(因此不需要放入RESX 文件)。我的@ 和非@ 字符串有不同的颜色。

标签: c# sql .net


【解决方案1】:

剪切和粘贴失败。有人没有花时间清理代码。没有理由使用string.Format。只需删除它并直接分配。


⚠️ 警告 ⚠️

如果这个人使用Format来组合参数要小心;应该使用SQLCommandSQLParameter 类来避免sql 注入。

【讨论】:

  • 我正要回答同样的问题,但你是第一个:)
  • ...但 备用 @ 并使 sql 多行且 可读string query = @"select type_cd, type_shpmt from codes";
【解决方案2】:

虽然Format 应该删除,但备用@ 并使查询更具可读性

  string query = 
     @"select type_cd, 
              type_shpmt 
         from codes";

如果您想修改表、字段名称等(您不能通过 Sql 参数 进行)尝试使用 字符串插值

  string myTableName = "codes";

  ...

  string query = 
     $@"select type_cd, 
               type_shpmt 
          from {myTableName}";

【讨论】:

  • 就我个人而言,我认为突出 @ 的作用 (verbatim string) 更有益,因为查询已经可读。
猜你喜欢
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 2015-12-04
相关资源
最近更新 更多