ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





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









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





صفحه 2 از 16 نخست 1234512 ... آخرین
نمایش نتایج: از 11 به 20 از 154
Like Tree3Likes

موضوع: نکات بسيار مهم در سي شارپ

  1. #11
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    Method overloading چیست؟

    تعریف Method overloading : به امکان تعریف چندین متود با نام یکسان اما متفاوت درامضا( نوع و تعداد پارامترها )در یک کلاس گفته می شود .در واقع امکان داشتن ورژنهای مختلفی از یک متود درون یک کلاس.موارد زیر در Method overloading مطرح می باشند:
    برای overload کردن یک متود باید متودهایی با signature های متمایز از یکدیگر ایجاد کنیم.signature هر متود شامل نوع , ترتیب و تعداد پارامترها می باشد.
    return type یا مقدار برگشتی هر متود شامل signature متود نمی شود ,در #c مجاز نیستیم 2متود با signature یکسان امابا مقادیر برگشتی متفاوت داشته باشیم.
    مثال :
    کد:
    public class MyMathClass
    *{
    ****public int AddNum(int x)
    ****{
    *******return x + x;
    ****}
    ****public int AddNum(int x, int y)
    ****{
    *******return x + y;
    ****}
    ****public float AddNum(float x)
    ****{
    *******return x + x;
    ****}
    **}



    منبع:سری های آموشی TestOut

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  2. #12
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    abstract class یا کلاس مجرد چیست؟

    s ,کلاس غیر قطعی و ناتمامی است که در سطح فرزندانش باید پیاده سازی آن تکمیل گردد.
    ویژگیهای abstract class :
    در اعلان کلاس abstract از کلمه کلیدی abstract قبل از class استفاده می کنیم.
    اگر کلاسی تنها یک رفتار و یا خاصیت غیر قطعی داشته باشد آن کلاس تبدیل به یک کلاس مجرد و غیر قطعی میگردد.
    abstract class ها non-instantiatable هستند.در واقع به علت ناتمام بودن پیاده سازیشان نمی توانیم از آنها instanceبسازیم.
    abstract class ها حداقل یک یا بیشتر متود یا پروپرتی abstract دارند.abstract member ها بدون هیچگونه پیاده سازی فقط declare می شوند.abstract member ها قابل تعریف در کلاسی غیر از کلاس abstract نیستند.
    کلاسهای فرزند abstract class باید تمامی abstract member ها را پیاده سازی کنند.
    از کلمه کلیدی sealed در اعلان abstract class نمی توانیم استفاده کنیم .در واقع abstract class باید توسط فرزندانش به ارث رود.
    متودهای مجرد و غیر قطعی که نیاز به overrid شدن دارند ,نیازی به کلمه کلیدی virtual ندارند .در واقع کلمه کلیدی virtual در کلمه abstract نهفته است.

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  3. #13
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    تضمین آنکه چطور همیشه پس از اتمام کار با یک آبجکت حتما از حافظه خارج (dispose) شود

    عادت کنید که همیشه از using استفاده کنید.
    برای مثال :
    کد:
    using (FileStream FS = new FileStream("Test.txt", FileMode.Create))
    {
    ****FS.WriteByte((byte)1);
    ****FS.WriteByte((byte)2);
    ****FS.WriteByte((byte)3);
    ****using (StreamWriter SW = new StreamWriter(FS))
    ****{
    ********SW.WriteLine("some text.");
    ****}
    }
    که اگر بخواهید مثال بالا را به بدون استفاده از using پیاده سازی کنید باید چیزی شبیه به تیکه کد زیر بنویسید :
    کد:
    FileStream FS = new FileStream("Test.txt", FileMode.Create);
    try
    {
    ****FS.WriteByte((byte)1);
    ****FS.WriteByte((byte)2);
    ****FS.WriteByte((byte)3);
    ****StreamWriter SW = new StreamWriter(FS);
    ****try
    ****{
    ********SW.WriteLine("some text.");
    ****}
    ****finally
    ****{
    ********if (SW != null)
    ********{
    ************((IDisposable)SW).Dispose();
    ********}
    ****}
    }
    finally
    {
    ****if (FS != null)
    ****{
    ********((IDisposable)FS).Dispose();
    ****}
    }
    همینطور که میبینید استفاده از using کد شما را راحتتر، خواناتر و کوتاه تر میکند.

    [برای نمایش لینک باید عضو شوید. ]

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  4. #14
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    property چیست و چرا از آن استفاده می کنیم؟

    یک property متشکل از 2 متود set,get است که برای دریافت و یا تخصیص مقادیر به متغیر ها استفاده می شوند .از معایب تعریف متغیرهای کلاس به صورت Public اینست که هر موجودی از بیرون کلاس می تواند دسترسی مستقیمی به آن داشته باشد و براحتی آن را دستکاری کند و در ضمن هیچ گونه عمل validation بر روی مقادیر متغیر ها صورت نمیگیرد ,که این با اصول صحیح oop منافات دارد .
    دلایل استفاده از property به جای یک متغیر:
    1-رعایت اصل encapsulation
    2-امکان بازرسی و validation

    کد:
    public* class Circle
    ****{
    ********private double radius;
    ********public double Radius
    ********{
    ************get
    ************{
    ****************return radius;
    ************}
    ************set 
    ************{
    ****************if (value>0 && value<50)
    ******************radius = value; 
    **
    ************}
    ********}
    ********public double* GetArea()
    ********{
    ************return radius * radius * 3.14;
    ********}
    **
    **}

    برای مطالعه بیشتر [برای نمایش لینک باید عضو شوید. ]

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  5. #15
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    ایندکسرها (Indexers)

    ایندکسرها نوعی از پراپرتیها هستند که به شما اجازه میدهند با اشیاء کلاس خود آرایه وار رفتار کنید.
    تعریف یک ایندکسر نیز مانند تعریف یک پراپرتی است و در حالت کلی داریم :

    <Modifier> <Return type> this[arguments]
    {
    ****get { }
    ****Set { }
    }



    برای مثال - با فرض داشتن کلاسی مانند :
    class Employee
    {
    ****private string[] name = new string[10];
    <b>*** public string this[int index]</b>
    ****{
    ********get
    ********{
    ************return name[index];
    ********}
    ********set
    ********{
    ************name[index] = value;
    ********}
    ****}
    }

    میتوان نوشت :
    Employee emp = new Employee();
    emp[0] = "Joydip";
    emp[1] = "Manashi";
    emp[2] = "Jini";



    نکته :
    + ایندکسرها حتما باید یک پارامتر داشته باشد.
    + ایندکسرها نمیتوانند استاتیک باشند (بعلت نیاز به this)
    ____________________________________________
    [برای نمایش لینک باید عضو شوید. ]

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  6. #16
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    ارسال تعداد متغیر پارامتر به یک متود

    با استفاده از کلمه کلیدی params مانند نمونه زیر :
    public int Add(params int[] list)
    {
    **int sum = 0;
    **foreach (int i in list)
    ****sum += i;
    **return sum;
    }


    حال میتونیم این متود را به این شکل صدا بزنیم :
    int ans1 = Add(1);
    *
    int ans2 = Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    *
    int ans3 = Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
    *
    int ans4 = Add();



    نکته :* متود میتواند چندین پارامتر دیگر غیر از پارامتر از نوع params بپذیرد اما پارامتر params حتما باید آخرین پارامتر باشد. مانند :
    public void AddAndPrint(string str, params int[] list)
    {
    **int sum = 0;
    **foreach (int i in list)
    ****sum += i;
    **Console.WriteLine(str + sum);
    }



    [برای نمایش لینک باید عضو شوید. ]

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  7. #17
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    تعریف عملگر های سفارشی

    class MyClass
    {
    ********private int number ;
    ********public MyClass(int _number)
    ********{
    ************this.number = _number;
    ********}
    ********public static MyClass operator+ (MyClass c1, MyClass c2)
    ********{
    ************return new MyClass(c1.number + c2.number);
    ********}
    }



    تعریف یک Operator overloading همیشه باید بصورت Static و Public باشد و مقدار برگشتی آن نیز نمیتواند void باشد.

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  8. #18
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    فراخوانی یک رویداد از رویداد دیگر

    private void Form1_Load(object sender, EventArgs e)
    {
    MessageBox.Show(sender.ToString());
    }


    و

    private void button1_Click(object sender, EventArgs e)
    {
    System.EventArgs arg = new System.EventArgs();
    Form1_Load(button1.Text, arg);
    }

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  9. #19
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    sort کردن آبجکتهای یک کلاس با پیاده سازی اینترفیس IComparable

    کلاس مورد نظر باید اینترفیس IComparable رو پیاده سازی کند. (این اینترفیس تنها یک متود CompareTo دارد)
    به نحوه ی پیاده سازی متود CompareTo دقت کنید :

    public class Person : IComparable
    {
    private string _firstname;
    public string Firstname
    {
    get { return _firstname; }
    set { _firstname = value; }
    }

    private string _lastname;
    public string Lastname
    {
    get { return _lastname; }
    set { _lastname = value; }
    }

    private int _age;
    public int Age
    {
    get { return _age; }
    set { _age = value; }
    }

    public Person(string firstname, string lastname, int age)
    {
    _firstname = firstname;
    _lastname = lastname;
    _age = age;
    }

    <b> public int CompareTo(object obj)</b>
    <b> {</b>
    if (obj is Person)
    {
    Person p2 = (Person)obj;
    return _firstname.CompareTo(p2.Firstname);
    }
    else
    throw new ArgumentException("Object is not a Person.");
    <b> }</b>


    public override string ToString()
    {
    return String.Format("{0} {1}, Age = {2}", _firstname,
    _lastname, _age.ToString());
    }
    }

    مثال - Sort کردن افراد از روی اسم کوچک (استفاده از کلاس بالا) :

    List<Person> persons = new List<Person>();
    persons.Add(new Person("Behrouz", "Rad", 30));
    persons.Add(new Person("Omid", "Mottaghi Rad", 31));
    persons.Add(new Person("Mehdi", "Keramati", 32));
    persons.Add(new Person("Ali", "Keshavarz", 33));
    persons.Add(new Person("Mohammad", "Heshemian", 34));
    persons.Add(new Person("Farhad", "XXX", 35));

    //Before Sorting
    listBox1.Items.AddRange(persons.ToArray());

    //ُSorting List
    persons.Sort();

    //Sorted List
    listBox2.Items.AddRange(persons.ToArray());


    منبع : [برای نمایش لینک باید عضو شوید. ]

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

  10. #20
    Prof.MohammadGh
    Moderator
    تاریخ عضویت
    1970 Jan
    محل سکونت
    Iran
    نوشته ها
    317
    9
    183

    فراخوانی یک متد با یک Thread*جداگانه

    معمولا متدهایی که بار پردازشی زیادی دارند موجب کندی برنامه میشن
    برای جلوگیری از این کار میشه این متد هارو با استفاده از یک Thread متفاوت از Thread اصلی برنامه فراخوانی کرد.
    using System.Threading;

    فرض کنیم این متد رو داریم :
    void DoSomething()
    {
    ...
    }

    تعریف Thread جدید برای متد مورد نظر :
    Thread  myThread = new Thread(new ThreadStart(this.DoSomthing));

    فراخوانی متد با استفاده از متد تعریف شده*:
    myThread.Start();

    برای متوقف کردن Thread*ایجاد شده :
    myThread.Abort();





    نکته :*
    هر Thread*فقط میتواند با object هایی کار کند که خودش آنها را ایجاد کرده است. مثلا اگر در متد DoSomething*شما بخواهید با یک label که روی فرم است کار کنید cross-thread exception رخ خواهد داد چون آن label بوسیله Thread*اصلی برنامه ایجاد شده است.

    Info بسمه تعالي

    1.از عناوين مناسبي براي ايجاد تاپيکها استفاده کنيد.
    2.اگر پستي برايتان مفيد بود فقط از دکمه ي تشکر آن پست استفاده کنيد.

    To Contact Me:[برای نمایش لینک باید عضو شوید. ]

صفحه 2 از 16 نخست 1234512 ... آخرین
نمایش نتایج: از 11 به 20 از 154

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ: 0
    آخرين نوشته: 2012-02-18, 10:35 PM
  2. آسيب*پذيري Login ID در SQL Server 7.0
    توسط MspSoft در انجمن SQL Server
    پاسخ: 0
    آخرين نوشته: 2012-01-30, 12:02 AM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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

Content Relevant URLs by vBSEO 3.6.0 RC 2