First, FullName is a property. It always returns a value. Therefore, the body signature must be Func<T> , where T is the return type (which is defined as string in your example) or the equivalent delegate.
The signature of your void Print(string message) method is Action<string> , because the compiler understands that void does not return a value and takes one parameter. He understands that some operators return a value (for example, => "a" ), and some can stand on their own (although they can return a value like => new object() ). Therefore, you can say whether you are spoiled: "CS0201: only assignment, call, increment, decrement and new object expressions can be used as an operator."
source share