I understand partial methods can be used to split the definition of a method across multiple files. I’m curious though if it’s permissible to have each definition of a method across multiple files contain code?
For example, say I have a method private partial void Foo(). Let’s say I’ve got it defined in file A and file B. Can both instances have code contained in the method, or just one or the other? I guess I’d be surprised if this were permitted.
No, you can’t. If you could, when you call
Foo(), which code would execute first? If both versions were dealing with (and modifying) global state, it would be very important to know the order of execution.Anyway, it makes no sense. So no, you can’t.
##Nasty example 1
As a simple example of the potential nastiness of the erratic behavior emerging from such a possibility, suppose you could, and suppose you had the following code:
When you call
NastyMethod(), what value would it print? No sense!##Nasty example 2
Now another strange problem. What to do with parameters? And return values?
And now, how could one possibly give a sense to this code? Which return should we consider after calling
HasRealSolution(1, 2, 1)? How is it ever conceivable to have 2 different, simultaneous, return values* for a single method? We are not dealing with nondeterministic finite automata!To those who would impose that in this hypothetical world my inexistent partial methods should be
void, replace thereturns with setting a value on some private field to that class. The effect is almost the same.* Note that what I’m talking here is not a single return value composed of two values, such as a Tuple<T1, T2>. I’m talking here about TWO return values. (???)