C Sharp: Difference between revisions

From Wildsong
Jump to navigationJump to search
Brian Wilson (talk | contribs)
mNo edit summary
Brian Wilson (talk | contribs)
mNo edit summary
Line 10: Line 10:
  public const string foo = "I am read - only"; // happens at compile time
  public const string foo = "I am read - only"; // happens at compile time


but actually you can do this
Check the debugger, you can see before the first line executes that foo = null.
Since it happens at load time, you can do this


  public static readonly string foo = new some_initializer();
  public static readonly string foo = Something.StringThing();


so the value is set once, and it's done atomically so it is thread-safe.
so the value is set once, and it's done atomically so it is thread-safe.


== Preprocessor Directives ==
== Preprocessor Directives ==

Revision as of 23:40, 23 May 2012

I wanted this page to be called C# but apparently mediawiki did not approve. Oh well. Maybe I will put all things beginning with the letter 'c' here.

readonly

Yes, there is a readonly setting for variables. One would think 'const' would be enough. Aren't these the same?

public static readonly string foo = "I am read - only."; // happens at program load
public const string foo = "I am read - only"; // happens at compile time

Check the debugger, you can see before the first line executes that foo = null. Since it happens at load time, you can do this

public static readonly string foo = Something.StringThing();

so the value is set once, and it's done atomically so it is thread-safe.

Preprocessor Directives

#if DEBUG
 http://codeidol.com/csharp/essential-csharp/Operators-and-Control-Flow/Csharp-Preprocessor-Directives/
#endif

What about things in square brackets

That I can't type in a wiki, like "bracket CommandLine bracket"

When would I ever use a Struct?

Read the official documentation here.

How can I get traction using command line builds with C#?