मेरी अत्यधिक वैज्ञानिक और सही प्रयोग के आधार पर यह मेरी मशीन पर बाहर सबसे ऊपर है 1,000,000,000 वर्णों से पहले (मैं एक बेहतर पिनपॉइंट प्राप्त करने के लिए अभी भी नीचे कोड चला रहा हूं)। अद्यतन: कुछ घंटों के बाद, मैंने छोड़ दिया है। अंतिम परिणाम: 100,000,000 वर्णों से बहुत अधिक जा सकते हैं, तुरंत सिस्टम.ऑटऑफमेमरी अपवाद 1000,000,000 वर्णों पर दिया गया।
using System;
using System.Collections.Generic;
public class MyClass
{
public static void Main()
{
int i = 100000000;
try
{
for (i = i; i <= int.MaxValue; i+= 5000)
{
string value = new string('x', i);
//WL(i);
}
}
catch (Exception exc)
{
WL(i);
WL(exc);
}
WL(i);
RL();
}
#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static void RL()
{
Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
यह सही उत्तर है। स्ट्रिंग लम्बाई निकालने के लिए पर्याप्त आवंटित करने में सक्षम होने से पहले आपको स्मृति से बाहर होने की अधिक संभावना है। एक ताजा बूट पर आप यहां वर्णित 2 जीबी (1 एम अक्षरों के साथ) आवंटित करने में सक्षम हो सकते हैं, लेकिन यह सब कुछ है। –
मानते हैं कि आपका "कोई भी ऑब्जेक्ट 2 जीबी से अधिक नहीं हो सकता है" दावा सटीक है, यह सैद्धांतिक सीमा के साथ-साथ व्यावहारिक है - स्ट्रिंग लम्बाई पर बाधा कुल ऑब्जेक्ट आकार होगी, न कि लंबाई फ़ील्ड की क्षमता। – McKenzieG1
यदि कोई मेरी सटीक मान में रूचि रखता है, तो मेरी 64-बिट मशीन पर यह 1,073,741,791 (1024 · 1024 · 1024 - 33) वर्ण है। यह भी देखें [बाइट [] '] (http://stackoverflow.com/q/6616739/41071) के सटीक अधिकतम आकार के बारे में मेरा संबंधित प्रश्न। – svick