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

نام تاپیک: مشکل در تعریف کلاس

  1. #1

    مشکل در تعریف کلاس

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

    class Vertex
    {

    public float X;
    public float Y;
    }


    Vertex[] myNode;


    و در رویداد فرم لود نوشتم:

    private void Form1_Load(object sender, EventArgs e)
    {
    myNode=new Vertex[20];

    }


    حال که می خواهم مقادیر آن را مقدار دهی کنم, در هنگام اجرا خطا میگیرد!!

    myNode[0].X = 1;


    لطفاً راهنماییم کنید...

  2. #2
    کاربر دائمی آواتار sinashahab
    تاریخ عضویت
    تیر 1387
    محل زندگی
    تهران و ترک کامپیوتر D:
    پست
    715

    نقل قول: مشکل در تعریف کلاس

    خوب بايد هر كدوم از اون 20 تا رو به بار مقدار دهي كني.

    با حلفه مثلا : (شرمنده الان VS ندارم)
    for (int i = 0 ; i < 20 ; i++ )
    {
    class[i] = new class();
    }
    آخرین ویرایش به وسیله sinashahab : دوشنبه 01 فروردین 1390 در 10:49 صبح

  3. #3
    کاربر دائمی آواتار saeedgharedaghi
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    سن
    34
    پست
    202

    نقل قول: مشکل در تعریف کلاس

    سلام دوست عزیز
    چون نوع متغیر داخل کلاس از نوع float است باید مقدار float به آن متغیر نسبت داد،
    شما با این خط کد در واقع یک مقدار int به متغیر کلاس نسبت میدهید، و چون کامپایلر سی شارپ نمیتواند عمل تبدیل را خود انجام دهد
    پس باید شما این کار را انجام دهید.
    2 روش وجود دارد:

    1.                         myNode[0].X =(float) 1;
    2. myNode[0].X = 1f;



    در ضمن باید بگم ربطی نداره کل 20 تا کلاس رو مقدار دهی کنی یا نه.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    تهران
    سن
    38
    پست
    1,104

    نقل قول: مشکل در تعریف کلاس

    میتونی به جای 1 بنویسی 1.0

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1387
    پست
    62

    نقل قول: مشکل در تعریف کلاس

    نقل قول نوشته شده توسط saeedgharedaghi مشاهده تاپیک
    سلام دوست عزیز
    چون نوع متغیر داخل کلاس از نوع float است باید مقدار float به آن متغیر نسبت داد،
    شما با این خط کد در واقع یک مقدار int به متغیر کلاس نسبت میدهید، و چون کامپایلر سی شارپ نمیتواند عمل تبدیل را خود انجام دهد
    سلام دوست من.
    فکر میکنم اشتباه میفرمایید. بصورت implicit خیلی از انواع درون ساخت دات نت قابل تبدیل به هم هستند و بقولی کامپایلر (یا بطور دقیقتر زمان-اجرا) بطور خودکار عمل تبدیل رو انجام میده (این صفحه رو لطفا ببینید).
    فکر میکنم مشکل اصلی هم همونطور که دوست عزیزمون sinashahab فرمودند این باشه که هنوز تک تک اعضای آرایه مقدار دهی نشدن. و با مثلا راه حل ایشون مشکل حل میشه...
    آخرین ویرایش به وسیله epsi1on : یک شنبه 29 اسفند 1389 در 11:56 صبح

  6. #6

    نقل قول: مشکل در تعریف کلاس

    ممنون, مشکل حل نشد!
    برای متغیر که نبود, چون خودش 1 را float میکنه! اگر نمی کرد اصلاً اجرا نمی شد و ارور میداد!
    برنامه ی من اجرا میشود..., به رویدادی که در آن مقدار دهی وجود دادرد میزسد, متوقف می شود!
    حلقه هم فایده ای نداشت!
    آیا مکان تعریف درست است؟!
    کلاس را در داخل

    public partial class Form1 : Form
    {

    تعریف کرده ام....
    لطفا راهنماییم کنید

  7. #7

    نقل قول: مشکل در تعریف کلاس

    دوست عزیز توضیح دوستمون sinashahab درست بود. شما توی لود فرم فقط یک آرایه ساختید ولی هر یک از عناصر آرایه جداگانه باید ساخته بشه (new بشه!) به کد ساده زیر توجه کنید.
    public partial class frmBase : System.Windows.Forms.Form
    {
    public frmBase()
    {
    InitializeComponent();
    }
    class Vertex
    {
    public float X;
    public float Y;
    }

    Vertex[] myNode;

    private void frmBase_Load(object sender, EventArgs e)
    {
    myNode = new Vertex[20];
    for (int i = 0; i < myNode.Length; i++)
    myNode[i] = new Vertex();
    myNode[0].X = 1;
    }
    }

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

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