PDA

View Full Version : سوال: کدهای زیر چه کاری انجام میدهند؟



K.Mohammadreza
یک شنبه 14 آذر 1400, 06:12 صبح
باسلام و احترام
من یک تابع دارم که برخی از کدهای اون به شرح زیر است، چون سی شارپ را بصورت حرفه ای کار نکردم و فقط اصولی را می‌دونم لذا درک برخی از کد برام مشکل است خصوصا حلقه ی for ی که در تابع استفاده شده است از دوستان کسی می‌دونه این کدها چکار میکنن؟ خصوصا حلقه for و کپی آرایه ها . ممنون


while (true)
{
try
{
byte[] numArray1 = this.usbIOHandler.USBRead();
if (numArray1 != null)
{
if (numArray1.Length == 7)
{
byte[] address = new byte[4];
Array.Copy((Array) numArray1, 0, (Array) address, 0, 4);
int port = (int) numArray1[4] * 256 + (int) numArray1[5];
int num1 = (int) numArray1[6];
int length1 = 0;
byte[] buffer = (byte[]) null;
byte[] numArray2 = this.usbIOHandler.USBRead();
if (numArray2 == null)
break;
if (numArray2.Length > num1)
{
int num2 = 0;
for (int index = 0; index < num1; ++index)
num2 = num2 * 256 + (int) numArray2[index];
length1 = num2 + num1;
}
if (length1 > 0)
buffer = new byte[length1];
Array.Copy((Array) numArray2, 0, (Array) buffer, 0, numArray2.Length);
int length2 = numArray2.Length;
bool flag = false;
byte[] numArray3;
for (; length2 < length1; length2 += Math.Min(numArray3.Length, buffer.Length - length2))
{
numArray3 = this.usbIOHandler.USBRead();
if (numArray3 == null)
{
flag = true;
break;
}
Array.Copy((Array) numArray3, 0, (Array) buffer, length2, Math.Min(numArray3.Length, buffer.Length - length2));
}