Я создал небольшую программу для написания XML-комментария для свойств (к которому не применяются атрибуты клиента).
/// <summary>
/// Write XML-Comment for Properties(which dont have customer attributes applied).
/// </summary>
/// <param name="fileName">'*.cs' file along with full path to comment.</param>
/// <returns></returns>
static bool WriteComment(string fileName)
{
List<string> code = new List<string>();
using (StreamReader sr = new StreamReader(fileName))
{
while (!sr.EndOfStream)
{
code.Add(sr.ReadLine());
}
List<int> indexes = (from line in code
where line.Contains("get")
select code.IndexOf(line)).ToList();
int count = 0;
foreach (int i in indexes)
{
code.Insert((i + count++) - 2, getWhiteSpace(code[(i + count) - 3]) + "/// <summary>");
code.Insert((i + count++) - 2, getWhiteSpace(code[(i + count) - 3]) + "/// Gets or Sets the " + getPropertyName(code[(i + count) - 3]));
code.Insert((i + count++) - 2, getWhiteSpace(code[(i + count) - 3]) + "/// </summary>");
}
}
#if DEBUG
foreach (string line in code)
Console.WriteLine(line);
#else
using (StreamWriter sw = new StreamWriter(fileName))
{
foreach (string line in code)
sw.WriteLine(line);
}
#endif
return true;
}
/// <summary>
/// To retrive property name.
/// </summary>
/// <param name="property">Property Name Line(line with visibiliy mode and return type ).</param>
/// <returns>Property Name.</returns>
public static string getPropertyName(string property)
{
return Regex.Replace(property.Substring(property.LastIndexOf(" ")), "([a-z])([A-Z])", "$1 $2").TrimStart();
}
/// <summary>
/// Get initial position of the property. So that XML-comment can be placed properly
/// at the top.
/// </summary>
/// <param name="codeLine">Property Line code.</param>
/// <returns>Number of White Space.</returns>
public static string getWhiteSpace(string codeLine)
{
string retStr = "";
foreach (string s in codeLine.Split())
{
if (s != string.Empty) break;
retStr += " ";
}
return retStr;
}
Как видно из метода getWhiteSpace
Я проверяю Empty String
и это хорошо работает.Но, если я применю string.Empty
к retStr
в цикле ... возвращаемое значение будет string.Empty
только!Это я могу понять, что объединение string.Empty
приведет только к string.Empty
.
Теперь у меня вопрос, как if (s != string.Empty)
работает и почему if (s != " ")
или if (s != "\t")
не работает?