Defining and Undefining Symbols C# with Example



Defining and Undefining Symbols C# with Example

A compiler symbol is a keyword that is defined at compile-time that can be checked for to conditionally execute 
specific sections of code. 
There are three ways to define a compiler symbol. They can be defined via code: 
#define MYSYMBOL 
They can be defined in Visual Studio, under Project Properties > Build > Conditional Compilation Symbols: 
(Note that DEBUG and TRACE have their own checkboxes and do not need to be specified explicitly.) 
Or they can be defined at compile-time using the /define:[name] switch on the C# compiler, csc.exe. 
You can also undefined symbols using the #undefine directive. 
The most prevalent example of this is the DEBUG symbol, which gets defined by Visual Studio when an application is 
compiled in Debug mode (versus Release mode). 
public void DoBusinessLogic() 
{ 
try 
{ 
AuthenticateUser(); 
LoadAccount(); 
ProcessAccount(); 
FinalizeTransaction(); 
} 
catch (Exception ex) 
{ 
#if DEBUG 
System.Diagnostics.Trace.WriteLine("Unhandled exception!"); 
System.Diagnostics.Trace.WriteLine(ex); 
throw; 
#else 
LoggingFramework.LogError(ex); 
DisplayFriendlyErrorMessage(); 
#endif 
} 
} 
In the example above, when an error occurs in the business logic of the application, if the application is compiled in 
Debug mode (and the DEBUG symbol is set), the error will be written to the trace log, and the exception will be re- 
 

thrown for debugging. However, if the application is compiled in Release mode (and no DEBUG symbol is set), a 
logging framework is used to quietly log the error, and a friendly error message is displayed to the end user. 

0 Comment's

Comment Form

Submit Comment