Doing so would violate the language's goals for object-orientation, type safety, and security. Delegates are object-oriented. Delegate declarations are compiled into classes, and delegate instances behave just like other instances. Delegates are type safe. Incorrect casting can cause system crashes, and it is possible to do things such as treat an integer value as a function pointer, and vice versa.
Delegates are secure .
It is useful to examine a real-world example. Consider the problem of writing a sorting library that can sort an array of objects using a comparison method provided by the caller. In this example, we'll use delegates for the comparison method. The sorting package defines a delegate class. The caller implements a comparison method and instantiates a delegate that encapsulates it.