1

我写了这样的东西:

var _views = (@Model.Views == 1 ? "view" : "views");
var _comments = (@Model.Comments == 1 ? "comment" : "comments");

if(@Model.Views > 0)
{
   if (@Model.Comments > 0)
   {
       @String.Format("{0:n0} {1}, {2:n0} {3}", @Model.Views, _views, @Model.Comments, _comments);
   }
   else
   {
       @String.Format("{0:n0} {1}", @Model.Views, _views);
   }
}
else if (@Model.Comments > 0)
{
   @String.Format("{0:n0} {1}", @Model.Comments, _comments);
}

它确实有效。

它显示视频的观看次数和评论数(例如http://www.voiceofconscience.org/Video/2

我以这种低质量的方式解决了一个单数/复数问题。

我想知道它应该如何被视为“好风格”

问候马吕斯

4

3 回答 3

2

这有点更紧凑,它概括为两个以上的计数:

var items = new List<string>();
if (Model.Views > 0)
    items.Add(string.Format("{0:n0} {1}", Model.Views, _views));
if (Model.Comments > 0)
    items.Add(string.Format("{0:n0} {1}", Model.Comments, _comments));
var result = ", ".Join(items);

(注意:所有@s 都让您看起来像是在编写 ASP.NET MVC 视图,但我不太明白您是如何放置它们的,因此@在必要时插入 s。)

于 2012-08-21T16:17:52.663 回答
2
  • 通常应避免使用以 @ 为前缀的变量——它们使代码更难阅读。
  • 下划线前缀通常用于私有实例变量。在这里使用它可能会令人困惑。

对于复数形式,请查看System.Data.Entity.Design.PluralizationServices.PluralizationService.

http://msdn.microsoft.com/en-us/library/system.data.entity.design.pluralizationservices.pluralizationservice.aspx

于 2012-08-21T16:18:47.030 回答
1

我认为如果您累积结果字符串而不是遇到 if-else 碎片,它会更好看。像这样:

StringBuilder sb = new StringBuilder();
if(@Model.Views > 0)
  sb.AppendFormat("{0:n0} {1}",@Model.Views, _views);
if(@Model.Comments> 0)
  sb.AppendFormat("{0:n0} {1}",@Model.Comments, _comments);
于 2012-08-21T16:20:10.180 回答