اذهب إلى المحتوى
  • 0

مشكلة في معاملات التابع C#

محمد خالد51

السؤال

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
     class car {


        int ID;
        string Color;
        string Model;

        public void information(int ID,string Color,string Model)
        {
            ID = ID;
            Color = Color;
            Model = Model;
        }
        public void showd()
        {
            Console.WriteLine("this is ID:{0}\n this is color:{1}\nthis is model:{2}", ID, Model, Color);
        }
            


    }
         

    class Program
    {
        static void Main(string[] args)
        {
            car myCar = new car();
               // عندما اكتب
               //myCar.information();
               //يحدث خط تحت الانفورميشن
            myCar.information(95," blue", "once");
            myCar.information();   //ما هيا المشكله
            Console.ReadKey();
        }
    }
}

نرجو المساعدة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

السلام عليكم ورحمة الله وبركاته

المشكلة هي أن الـmethod المسمى information في الصف car يأخذ ثلاث معاملات بينما أنت تمررين لا شيء له بهذا بالطبع سيرفض الكومبايلر هذا الكود.

لحل المشكلة عليك تعريف نسخة ثانية من تابع information ليصير الصف car هكذا:

class car {


  int ID;
  string Color;
  string Model;

  public void information(int ID,string Color,string Model)
  {
    ID = ID;
    Color = Color;
    Model = Model;
  }
  public void information()
  {
    // do something here
  }
  public void showd()
  {
    Console.WriteLine("this is ID:{0}\n this is color:{1}\nthis is model:{2}", ID, Model, Color);
  }



}

ما تضعه داخل النسخة الثانية يتوقف على ما تريد فعله، يمكنك مثلاً فعل اﻵتي:

public void information(int ID,string Color,string Model)
{
  ID = ID;
  Color = Color;
  Model = Model;
}
public void information()
{
  information(95," blue", "once");
}

أو أي شيء تريده.

بالمناسبة هناك خطأ في implementation الخاصة بالتابع information ذو الثلاث معاملات وهي في السطر التالي:

ID = ID;

ربما تظن أن التعليمة السابقة تسند ID parameter إلى ID Field الموجود ضمن الصف ولكن هذا غير صحيح بل التعليمة السابقة تسند ID parameter إلى نفسه مما يجعلها عديمة الفائدة، الصحيح هو التالي:

this.ID = ID;

وكذلك اﻷمر بالنسبة للـmodel وcolor، بهذا يصير صف car النهائي هو التالي:

class car {
  int ID;
  string Color;
  string Model;

  public void information(int ID,string Color,string Model)
  {
    this.ID = ID;
    this.Color = Color;
    this.Model = Model;
  }
  public void information()
  {
    information(95,"blue","once");
  }
  public void showd()
  {
    Console.WriteLine("this is ID:{0}\n this is color:{1}\nthis is model:{2}", ID, Model, Color);
  }
}

أرجو أن تكون الفكرة قد أصبحت واضحة

بالتوفيق وشكراً لك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...