StringBuilder.Capacity प्रॉपर्टी वर्तमान में आवंटित बफर आकार (वर्णों की संख्या) प्राप्त या सेट करती है। Length प्रॉपर्टी वास्तविक स्ट्रिंग लंबाई दर्शाती है। क्षमता हमेशा लंबाई से अधिक या बराबर होती है।
उदाहरण 1: विभिन्न कंस्ट्रक्टर्स के साथ क्षमता जांचना
using System;
using System.Text;
public class Demo {
public static void Main(string[] args) {
StringBuilder sb1 = new StringBuilder("Tim");
StringBuilder sb2 = new StringBuilder("Tom");
StringBuilder sb3 = new StringBuilder();
Console.WriteLine("StringBuilder1 क्षमता = " + sb1.Capacity);
Console.WriteLine("StringBuilder2 क्षमता = " + sb2.Capacity);
Console.WriteLine("StringBuilder3 क्षमता = " + sb3.Capacity);
// रेफरेंस असाइनमेंट
sb2 = sb3;
Console.WriteLine("क्या sb3, sb2 के बराबर है? = " + sb3.Equals(sb2));
}
}
आउटपुट
StringBuilder1 क्षमता = 16
StringBuilder2 क्षमता = 16
StringBuilder3 क्षमता = 16
क्या sb3, sb2 के बराबर है? = True
उदाहरण 2: कस्टम क्षमता और डिफ़ॉल्ट तुलना
using System;
using System.Text;
public class Demo {
public static void Main(string[] args) {
StringBuilder sb1 = new StringBuilder("Amy");
StringBuilder sb2 = new StringBuilder("Katie");
StringBuilder sb3 = new StringBuilder();
StringBuilder sb4 = new StringBuilder(5); // कस्टम क्षमता
sb2 = sb3; // रेफरेंस असाइनमेंट
Console.WriteLine("क्या sb3, sb2 के बराबर है? = " + sb3.Equals(sb2));
Console.WriteLine("sb1 क्षमता = " + sb1.Capacity);
Console.WriteLine("sb2 क्षमता = " + sb2.Capacity);
Console.WriteLine("sb3 क्षमता = " + sb3.Capacity);
Console.WriteLine("sb4 क्षमता = " + sb4.Capacity);
}
}
आउटपुट
क्या sb3, sb2 के बराबर है? = True
sb1 क्षमता = 16
sb2 क्षमता = 16
sb3 क्षमता = 16
sb4 क्षमता = 5
क्षमता व्यवहार
- डिफ़ॉल्ट क्षमता: 16 वर्ण
- स्ट्रिंग कंस्ट्रक्टर: क्षमता = स्ट्रिंग लंबाई (न्यूनतम 16)
- कस्टम क्षमता: निर्दिष्ट मान (यदि 16 से कम, तो 16 नहीं)
- स्वतः विस्तार: जब लंबाई क्षमता से अधिक होती है, क्षमता दोगुनी हो जाती है।
- अधिकतम क्षमता:
Int32.MaxValue(2,147,483,647) -MaxCapacityप्रॉपर्टी से प्राप्त करें।
क्षमता बनाम लंबाई
StringBuilder sb = new StringBuilder("Hello");
Console.WriteLine("लंबाई = " + sb.Length); // 5
Console.WriteLine("क्षमता = " + sb.Capacity); // 16
sb.Append(" World"); // लंबाई 11, क्षमता अभी 16
sb.Append(" इस टेक्स्ट से क्षमता बढ़ जाएगी क्योंकि यह 16 से अधिक हो जाता है");
// क्षमता स्वतः 32 हो जाएगी
क्षमता सेट करना
StringBuilder sb = new StringBuilder(100); // प्रारंभिक क्षमता 100
sb.Capacity = 200; // मैन्युअली क्षमता बढ़ाएं (लंबाई से कम नहीं सेट कर सकते)
प्रदर्शन टिप
यदि अंतिम स्ट्रिंग लंबाई लगभग ज्ञात है, तो कंस्ट्रक्टर में क्षमता सेट करने से कई रीअलोकेशन और कॉपी ऑपरेशन बचते हैं:
// खराब: कई रीअलोकेशन
var sb = new StringBuilder();
for (int i = 0; i < 10000; i++) sb.Append(i);
// अच्छा: प्री-अलोकेट
var sb = new StringBuilder(10000 * 5); // अनुमानित औसत 5 वर्ण प्रति संख्या
for (int i = 0; i < 10000; i++) sb.Append(i);