This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
That's a lot of code with a lot of markup mixed in with the behavior. I haven't a clue what the problem is or where you see it. Can you take all the unnecessary bits out and just show code which pertains to the problem you are having?
Also, with your next post, please remember to UseCodeTags (<- click). It makes the code a lot easier to read!
Yes, the "+" operator when applied to two strings produces the two strings concatenated together. Did you imagine that it would examine the two strings to see if they could be interpreted as integers, and if both of them could be, then it would add the two integers together and convert the result back to a string? No, it doesn't do anything complicated like that.
If you want the "+" operator to add two integers together in the normal arithmetic way, then give it two integers. Simple as that.