PDA

View Full Version : لطفا کمک کنید اشکال او.لین برنامه #C ام را رفع کنم



aliasghar
سه شنبه 07 تیر 1384, 06:49 صبح
سلام
من تازه چند ساعتی بیشتر نیست که با #C شروع کرده ام برای همین نمی دونم سئوالم را چطوری بیان کنم . فلذا شرح واقعه :

1) یک کلاس به برنامه اضافه کردم



using System;
namespace ns_class_book
{
public class book
{
private string BookName,AuthorName;
private float BookPrice;
public string BN
{
get
{
return BookName;
}
set
{
BookName = value;
}
}
public string AN
{
get
{
return AuthorName;
}
set
{
AuthorName = value;
}
}
public float BP
{
get
{
return BookPrice;
}
set
{
if (value<100)
{
throw new Exception("به نظر شما این کتاب یه کمی ارزون نیست");
}
else
if (value>100000)
{
throw new Exception("واو ! کتاب میخواهی بخری یا کتابخانه");
}
else
BookPrice = value;

}
}
public string BookDesc()
{
return BookName ;//+ " : " + BookPrice.ToString();
}
}
}




2) در فرم اصلی یک ArrayList ایجاد کردم:


ArrayList ALBook = new ArrayList();



3)کلاس تعریف شده به نام Book را ایجاد و مقدار دهی کردم سپس آن را داخل ArrayList ی که ساخته بودم (به نام ALBook) اضافه کردم


book n_book = new book();
n_book.BN = EdBookName.Text;
n_book.AN = EdAuthorName.Text;
n_book.BP = float.Parse(EdBookPrice.Text.Trim());
ALBook.Add(n_book);


4) در آخر میخواهم یک تابع به شکل زیر بنویسم که یک مقدار خاص را درArrayListم
جسیتجو کند ولی در یکی از فیلدهای هر Item های آن


for (int i=0;i<ALBook.Count;i++)
if (ALBook[i].BN ==_BookName)
return i;
return -1;


ولی به ALBook[i].BN اشکال میگیرد و میگوید


'object' does not contain a definition for 'BN

لطفا کمک کنید مشکل را حل کنم

Farhad-Csharp
چهارشنبه 08 تیر 1384, 08:16 صبح
اگر چند روز با سی شارپ کار می کردی چی میخواستی بپرسی؟
زیر دیپلم صحبت کن .

d.e.l.p.h.i
چهارشنبه 08 تیر 1384, 13:01 عصر
اگه میتونی کد کامل برنامتو یکجا بگذار ببینمش شاید بتونم کمکت کنم.

vcldeveloper
چهارشنبه 08 تیر 1384, 17:25 عصر
مقدار ALBook[i] باید به book تبدیل نوع (Type Cast) بشه. متاسفانه نمی دونم در #C چطور این کار انجام میشه. اگه دلفی بود:


book(ALBook[i]).BN

aliasghar
چهارشنبه 08 تیر 1384, 19:34 عصر
اول از همه تشکر میکنم
:flower:

ولی تو این چند ساعت کار با #C فهمیدم که اونهایی که با دلفی کار میکنند باید قدر اون را خوب بدونند

جواب مساله را هم خودم به این شکل پیدا کردم ولی نمیدونم بهینه هست یا نه؟



for (int i=0;i<ALBook.Count;i++)
{ book b1 = (book) ALBook[i];
if (b1.BN == _BookName)
{
b1 = null;
return i;
}

}
//b1 = null;
return -1;

small_programmer
چهارشنبه 08 تیر 1384, 21:07 عصر
در پیرو صحبتهای آقای کشاورز از این استفاده کن


((book)ALBook[i]).BN

جالبه

اگر چند روز با سی شارپ کار می کردی چی میخواستی بپرسی؟
توصیه:سعی کن نام پراپرتی ها را کامل و روشن بنویسی تا فیلدهای خصوصی را
:موفق: