Theoretically or in practice?
Theoretically, I believe it is 2-gigacharacters (that is, slightly over 2 billion characters, 4 billion bytes).
In practice, it's limited by real memory.
Also, on a 32 bit processor, you'd surely be limited to 1-gigacharacters (2 gigabytes) because that's the max addressable space in a 32 bit user process.
[Remember, all characters in .NET usage are 2 bytes each, to hold unicode characters.]