nameof expression
This is one of a series of posts on some of the new features in C# 6.0, which was just released.
In C# there is a very handy expression – typeof – that returns the Type of an object. For example:
if(someObject.GetType() == typeof(MyClass)) DoSomething(someObject);
(Not very OO, but there are times when it is really helpful).
C# 6 adds a similar operator – nameof – which returns the name of an object:
Console.WriteLine("The variable name is " + nameof(someObject)); >>The variable name is someObject
Although there aren’t a ton of situations where this is needed, it is really helpful when dealing with things like logging and exceptions. For example:
private void DoSomething(Customer cust) { if(cust == null) throw new ArgumentNullException(nameof(cust)); }
Of course, you could always explicitly provide the name, but if you rename the argument, it is very easy to forget to update a constant string. This could also be used when dealing with raising events, a la WPF, where you want to fire a changed event for a specific property.
Note that even if the object is fully qualified, only the name itself will be returned:
Console.WriteLine("The variable name is " + nameof(SomeClass.SomeProperty)); >>The variable name is SomeProperty
Here are links to posts about other new features in C# 6.0:
Leave a Reply