تسلسل سلسلة C # وتدريب السلسلة
سؤال
عند إجراء تسلسل سلسلة لسلسلة موجودة في تجمع المتدربين، هل يتم إدخال سلسلة جديدة في تجمع المتدربين أم يتم إرجاع مرجع إلى السلسلة الموجودة في تجمع المتدربين؟وفقًا لهذه المقالة، هل سيقوم String.Concat وStringBuilder بإدراج مثيلات سلسلة جديدة في تجمع المتدربين؟
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
هل يمكن لأي شخص أن يشرح كيفية عمل التسلسل مع تجمع المتدربين؟
المحلول
إذا قمت بإنشاء سلاسل جديدة، فلن يتم وضعها تلقائيًا في تجمع المتدربين، إلا إذا قمت بتسلسل وقت ترجمة الثوابت، وفي هذه الحالة سيقوم المترجم بإنشاء نتيجة سلسلة واحدة وتدريبها كجزء من عملية JIT.
نصائح أخرى
يمكنك معرفة ما إذا كان قد تم احتجاز سلسلة ما عن طريق الاتصال String.IsInterned
.سيعيد الاستدعاء سلسلة جديدة تكون إما مرجعًا إلى سلسلة داخلية تساوي السلسلة التي تم تمريرها كوسيطة، أو null
إذا لم يتم احتجاز السلسلة.