PDA

View Full Version : آیا می توان رشته را به صورت آرایه نوشت؟



forodo
پنج شنبه 26 اردیبهشت 1392, 16:07 عصر
سلام
این کد رو بنده متوجه نمی شم مگر می شود که آرایه تعریف نکرد ولی یک رشته را به صورت آرایه نوشت؟؟؟
لطفاً در مورد کد زیر مخصوصاً خط مشخص شده توضیح دهید.
اگر 20 تا 29 بدم 50 برمی گرداند و اگر 30 تا 39 بدم 51 برمی گرداند. البته می دونم که این اعداد در اصل به صورت رشته هستند و عدد نیستند ولی نمی دونم که این یعنی چی مثلاً [0]20 چرا 50 می شود که 20 عدد نیست، رشته است.؟
با تشکر

[ private Int64 FindCode(string Input)
{

Int64 temp = 0;
for (int i = 0; i < Input.Length-1; i++)
{
temp += (int)Input[i];
}

return temp;

}

tooraj_azizi_1035
پنج شنبه 26 اردیبهشت 1392, 16:34 عصر
سلام
اینکه شما با یک رشته می تونید به صورت آرایه ای رفتار کنید حتی با اینکه اصلاً خبری از تعریف آرایه نیست به دلیل وجود Indexer در تعریف کلاس string است.


در اینجا با استفاده از کلمه کلیدی this و کروشه استفاده از این کلاس رو به صورت آرایه ای ممکن می کنید:


class TempRecord
{
// Array of temperature values
private float[] temps = new float[10] { 56.2F, 56.7F, 56.5F, 56.9F, 58.8F,
61.3F, 65.9F, 62.1F, 59.2F, 57.5F };
// Auto-Implemented Property
System.DateTime date { get; set; }
// To enable client code to validate input
// when accessing your indexer.
public int Length
{
get { return temps.Length; }
}
// Indexer declaration.
// Input parameter is validated by client
// code before being passed to the indexer.
public float this[int index]
{
get
{
return temps[index];
}

set
{
temps[index] = value;
}
}
}




روش استفاده:

TempRecord tempRecord = new TempRecord();
// Use the indexer's set accessor
tempRecord[3] = 58.3F;
tempRecord[5] = 60.1F;


در اینجا هیچ تعریف آرایه ای وجود ندارد اما مانند آرایه با آن رفتار شده است.

و در مورد خطی که قرمز کردید، Input[i] یعنی کاراکتر i ام و شما اون را با تبدیل int، کد اسکی اون رو دریافت می کنید.

forodo
پنج شنبه 26 اردیبهشت 1392, 18:20 عصر
خیلی ممنون دوست عزیز

Tiam121
پنج شنبه 26 اردیبهشت 1392, 18:54 عصر
در واقع یک رشته آرایه ای از نوع char هست