نمایش نتایج 1 تا 10 از 10

نام تاپیک: مشکل در استفاده از property ها

  1. #1

    مشکل در استفاده از property ها

    با سلام خدمت دوستان
    من در پروژه ام یک کلاس به نام Student تعریف کرده ام. در فرم Form1 یک آرایه ای از کلاس Student دارم:

    Student[] students;


    حال می خواهم پس از ایجاد فرم 2 آرایه students را به فرم 2 بفرستم. برای این منظور در فرم 2 یک پراپرتی از نوع Student[] تعریف کرده ام:


    private Student[] students;
    public Student[] Students
    {
    get { return students; }
    set { students= value; }
    }


    حال در فرم 1 برای ارسال این آرایه به فرم 2 می نویسیم:


    Form2 frm = new Form2 ();
    frm.Students= this.students;
    frm.ShowDialog();


    اما با این پیغام خطا مواجه می شوم:

    Error Inconsistent accessibility: property type Project1.Student[]' is less accessible than property Project1.Form2.Students'



    ممنون می شوم اگر دوستان راهنمایی کنند که کجای برنامه اشکال دارد.

  2. #2

    نقل قول: مشکل در استفاده از property ها

    تو فرم 1
    public Student[] students;

  3. #3

    نقل قول: مشکل در استفاده از property ها

    public کردم اما باز هم همون خطا رو میده. طبیعی هم هست. من که نمیخواهم به students[] در فرم اول دسترسی داشته باشم که اونو public کنم. بلکه می خواهم به عنوان دیتا به فرم دوم ارسال کنم.

  4. #4
    کاربر دائمی آواتار amir-yeketaz
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    تهران
    پست
    508

    نقل قول: مشکل در استفاده از property ها

    اگه میشه برنامتون رو بذارین چون اصلا این چیزی که شما گفتین معنی نداره!!!!

  5. #5

    نقل قول: مشکل در استفاده از property ها

    نقل قول نوشته شده توسط amir-yeketaz مشاهده تاپیک
    اگه میشه برنامتون رو بذارین چون اصلا این چیزی که شما گفتین معنی نداره!!!!
    فکر می کنم کامل توضیح دادم. بطور خلاصه در فرم 1 یک آرایه از کلاس Student دارم که می خواهم این آرایه را به فرم 2 ارسال کنم. برای این منظور در فرم 2 یک پراپرتی از نوع []Student تعریف کردم. حال به هنگاه ایجاد فرم 2 می خواهم آرایه موجود در فرم 1 را به پراپرتی موجود در فرم 2 ارسال کنم اما با پیغام خطایی که گفتم مواجه می شوم.

  6. #6

    نقل قول: مشکل در استفاده از property ها

    کلاس Student که تعریف کردین اون public هستش؟؟؟؟؟

  7. #7
    کاربر دائمی آواتار amir-yeketaz
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    تهران
    پست
    508

    نقل قول: مشکل در استفاده از property ها

    فکر میکنم باید از ایندکسر استفاده کنید ...
    یعنی تو فرم دوم این کارو بکنید :
            private Student[] students = new Student[10];
    public Student this[int index]
    {
    get
    {
    return students[index];

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

    و تو فرم اول این کار :
               Form2 frm = new Form2();
    int i = 0;
    foreach (Student s in students)
    {
    frm[i] = s;
    }


    البته روش های خیلی بهتری برای استفاده از ایندکسر ها وجود داره که به نظرم به لینک زیر برید خیلی مفیده:
    http://www.csharp-station.com/Tutorials/Lesson11.aspx

    موفق باشید ...
    آخرین ویرایش به وسیله amir-yeketaz : پنج شنبه 27 خرداد 1389 در 15:49 عصر

  8. #8

    نقل قول: مشکل در استفاده از property ها

    شرمنده از همه دوستان. همونطور که دوستمون exlord گفتند خود کلاس Student را public تعریف نکرده بودم. مشکل حل شد. البته متوجه نشدم چرا؟ با توجه به اینکه کلاس Student در سطح namespace پروژه اصلی تعریف شده است تصور می کردم لازم نیست public تعریف شود مگر اینکه لازم باشد از داخل namespace دیگری به این کلاس دسترسی پیدا کرد. اما به هر حال این کلاس را public کردم و مشکل حل شد هر چند علتش را نفهمیدم!!

  9. #9

    نقل قول: مشکل در استفاده از property ها

    نقل قول نوشته شده توسط smt1383 مشاهده تاپیک
    شرمنده از همه دوستان. همونطور که دوستمون exlord گفتند خود کلاس Student را public تعریف نکرده بودم. مشکل حل شد. البته متوجه نشدم چرا؟ با توجه به اینکه کلاس Student در سطح namespace پروژه اصلی تعریف شده است تصور می کردم لازم نیست public تعریف شود مگر اینکه لازم باشد از داخل namespace دیگری به این کلاس دسترسی پیدا کرد. اما به هر حال این کلاس را public کردم و مشکل حل شد هر چند علتش را نفهمیدم!!
    اگه مشخص نکنی پیشفرض protected برمیداره نه public ........

  10. #10

    نقل قول: مشکل در استفاده از property ها

    نقل قول نوشته شده توسط exlord مشاهده تاپیک
    اگه مشخص نکنی پیشفرض protected برمیداره نه public ........
    پیش فرض Internal هست.
    Classes and structs are declared as internal by default unless the keyword public is added to the class definition

قوانین ایجاد تاپیک در تالار

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