AssertFlag


  AssertFlag 类是一个标记类,一般用在循环中,第一次循环与其后循环处理不相同时,可以使用此类。

  比如,在一个循环里拼接字符串时,使用变量判断加入逗号,如下所示:

[TestMethod]
public void TestWriteNames()
{
    var names = new [] { "fish", "dog", "cat", "cow" };
    var sb = new StringBuilder("names:");
    var i = 0;
    foreach (var name in names)
    {
        if (i++ == 0)
        {
            sb.Append(name);
        }
        else 
        {
            sb.AppendFormat(",{0}", name);
        }
    }
}

  使用 AssertFlag 类可以省略变量 i,如下所示:

[TestMethod]
public void TestWriteNames()
{
    var names = new [] { "fish", "dog", "cat", "cow" };
    var sb = new StringBuilder("names:");
    var assertFlag = new AssertFlag();
    foreach (var name in names)
    {
        if (assertFlag.AssertTrue())
        {
            sb.Append(name);
        }
        else 
        {
            sb.AppendFormat(",{0}", name);
        }
    }
}

  使用 Reset 方法可以重置到初始状态。