بعد التحية :
حاولت ان اعرف كيف للدالة substring العمل بالسرعة المعتاد عليها وعندما شفت احد هذه الكواد الفعلية لعمل هذه الدالة شفت فيها العجب ..
لذلك اتمنى من الأخوه شرح مفهوم عمل هذه الدالة كما في الكود التالي :
ايش القصد من هذا السطر
fixed (char *dest = tmp, src = this) {
memcpy ((byte*)dest, (byte*)(src + startIndex), length * 2);
}ماهي fixed
ايضا
[MethodImplAttribute (MethodImplOptions.InternalCall)] internal extern static String InternalAllocateStr (int length);
ماذا يقصد بـ InternalCall في الدالة InternalAllocateStr واين الكود الفعلي لها هل هي دالة api يتم استدعائها ام ماذا
الكود بالكامل
public unsafe String Substring (int startIndex, int length)
{
if (length < 0)
throw new ArgumentOutOfRangeException ("length", "< 0");
if (startIndex < 0)
throw new ArgumentOutOfRangeException ("startIndex", "< 0");
// re-ordered to avoid possible integer overflow
if (startIndex > this.length - length)
throw new ArgumentOutOfRangeException ("startIndex + length > this.length");
if (length == 0)
return String.Empty;
string tmp = InternalAllocateStr (length);
fixed (char *dest = tmp, src = this) {
memcpy ((byte*)dest, (byte*)(src + startIndex), length * 2);
}
return tmp;
}
[MethodImplAttribute (MethodImplOptions.InternalCall)]
internal extern static String InternalAllocateStr (int length);هذه هي طريقتهم في البرمجة فماذا عنا كيف نبرمج نحن الصراحة تعقدت لما شفت فكره عمل الدالة substring طبعا هناك اكثر من وسيط parameters للدالة ولكن ارفت المثال فقط لاحد صيغ هذه الدالة substring
ياريد حد يشرح فكره العمل الخاصة بها