How do function pointers in C work?

Function pointers in C Let’s start with a basic function which we will be pointing to: int addInt(int n, int m) { return n+m; } First thing, let’s define a pointer to a function which receives 2 ints and returns an int: int (*functionPtr)(int,int); Now we can safely point to our function: functionPtr = &addInt; … Read more

Hidden Features of C#? [closed]

This isn’t C# per se, but I haven’t seen anyone who really uses System.IO.Path.Combine() to the extent that they should. In fact, the whole Path class is really useful, but no one uses it! I’m willing to bet that every production app has the following code, even though it shouldn’t: string path = dir + … Read more

Why is Dictionary preferred over Hashtable in C#?

For what it’s worth, a Dictionary is (conceptually) a hash table. If you meant “why do we use the Dictionary<TKey, TValue> class instead of the Hashtable class?”, then it’s an easy answer: Dictionary<TKey, TValue> is a generic type, Hashtable is not. That means you get type safety with Dictionary<TKey, TValue>, because you can’t insert any … Read more

‘Static readonly’ vs. ‘const’

public static readonly fields are a little unusual; public static properties (with only a get) would be more common (perhaps backed by a private static readonly field). const values are burned directly into the call-site; this is double edged: it is useless if the value is fetched at runtime, perhaps from config if you change … Read more

How do I update the GUI from another thread?

The simplest way is an anonymous method passed into Label.Invoke: // Running on the worker thread string newText = “abc”; form.Label.Invoke((MethodInvoker)delegate { // Running on the UI thread form.Label.Text = newText; }); // Back on the worker thread Notice that Invoke blocks execution until it completes–this is synchronous code. The question doesn’t ask about asynchronous … Read more

How do you convert a byte array to a hexadecimal string, and vice versa?

You can use Convert.ToHexString starting with .NET 5. There’s also a method for the reverse operation: Convert.FromHexString. For older versions of .NET you can either use: public static string ByteArrayToString(byte[] ba) { StringBuilder hex = new StringBuilder(ba.Length * 2); foreach (byte b in ba) hex.AppendFormat(“{0:x2}”, b); return hex.ToString(); } or: public static string ByteArrayToString(byte[] ba) … Read more