This morning I ran into a ASP.NET bug in Visual Studio. Dragging a custom server control on an aspx file was not possible since I had ‘an invalid FORMATETC structure’ (what the …. is that?!). The message box alerting me something is really really wrong is this one:

Trying to solve the bug, I found the following attribute to be the problem: [ToolboxItem(true)]. Just delete the attribute, rebuild the application and the problem/bug disappears!
Good luck! Happy coding!
Still using two DateTime.Now calls to determine the duration of a certain call execution, like beneath?
DateTime start = DateTime.Now;
DoSomeCall();
double secondsToLog = (DateTime.Now - start).TotalSeconds;
This is not at all necessary: using the StopWatch class. The StopWatch class is more efficient than any other solution provided or created in .NET since it uses low-level API calls and supports a high-resolution performance counter (when there is hardware and software support).
Stopwatch watch = new Stopwatch();
watch.Start();
DoSomeCall();
watch.Stop();
double secondsToLog = watch.Elapsed.TotalSeconds;
For a Dutch customer I currently work for, I dealed with an incorrect social security number check (in Dutch: elfproef voor BSN’s/burgerservicenummers). After checking out the Internet for the correct definition of Dutch social security numbers (e.g. Burgerservicenummer – Wikipedia), I created the next check in C#:
string cleanBsnNr = bsnNr.Trim().Replace(".", "");
// A BSN consists of 9 characters ...
if(cleanBsnNr.Length != 9) return false;
// ... all being numeric and not resulting in a 0 when converted to a number ...
long l;
if(!long.TryParse(cleanBsnNr, out l)) return false;
else if(l == 0) return false;
// ... the number must be validatable to the so-called 11-proof ...
long total = 0;
for(int i = 1; i <= 9; i++)
{
// 11-proof voor BSN's: (9*A + 8*B + 7*C + 6*D + 5*E + 4*F + 3*G + 2*H + (-1*I)) % 11 == 0
int number = Convert.ToInt32(cleanBsnNr[i - 1].ToString());
int multiplier = 10 - i;
if(i == 9) multiplier = -1 * multiplier;
total += number * multiplier;
}
// ... not result in a 0 when dividing by 11 ...
if(total == 0) return false;
// ... and not have a modulo when dividing by 11.
return total % 11 == 0;
Good luck when you should build one for yourself. Checking your own built check can be done using this website with generated BSN’s (or your own, of course) by Menno Wilmans.