Then you can use the #if, #elif, #else properties to check if your flag is set. you can use boolean operators like && and || to check if multiple flags are set.
#define flag1
#define flag2
#undef flag1
using System;
using System.Collections.Generic;
namespace DEBUG00
{
class Person
{
public string Name { get; set; }
public DateTime Birthdate { get; set; }
public Person(string Name)
{
this.Name = Name;
}
public Person(string
FirstName, DateTime Birthdate)
: this(FirstName)
{
this.Birthdate = Birthdate;
}
public int GetAge()
{
var today = DateTime.Today;
int age = today.Year - Birthdate.Year;
return Birthdate > today.AddYears(-age) ? --age : age;
}
public override string
ToString()
{
#if flag1
return string.Format("{0}
{1}",FirstName);
#elif flag2
return string.Format("{0} {1} is {2} years old", Name, GetAge());
#else
return base.ToString();
#endif
}
}
class Program
{
static void Main(string[] args)
{
List<Person> ppl = new List<Person>();
ppl.Add(new Person("Pawel", new DateTime(1984, 01, 31)));
ppl.Add(new Person("Tomek", new DateTime(1988, 08, 28)));
ppl.Add(new Person("Magda", new DateTime(1984, 06, 28)));
foreach (var p in ppl)
Console.WriteLine(p.ToString());
}
}
}
in the above example we call a different toString() on our person class based on which flag is set
#Error #warning
the #error and #warning directives will create the corresponding warnings and errors to appear in visual studios error list. so the following
#warning this is my custom warning
#error this is my custom error
acting just like normal warnings and errors where errors interrupt the build process.
#DEBUG
the #DEBUG directive will let you isolate logic that you one want to run when you're application is set to debug. this can be useful if you want some specific logic to only fire when developing and not in production.