irpersian20
شنبه 03 مرداد 1394, 21:23 عصر
سلام
دوستان اینجا در کلاش مشتق شده، ما چه در متد new رو بزاریم و چه نزاریم. هیچ فرقی نمی کنه. فقط یک warning رو از بین بردیم اگر new رو قبل از نوع برگشتی متد بزاریم.
منتها همش حرف از این زده که اگر new رو نزاریم، نمیدونم متد پنهان میشه و خلاصه کامپایلر نمیدونه کدام متد رو صدا بزنه و میره متد base رو صدا میزنه
منتها ما هر چی تست زدیم هیچ فرقی نکرد!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample4
{
class BaseClass
{
public void Method1()
{
Console.WriteLine("Base - Method1");
}
public void Method2()
{
Console.WriteLine("Base - Method2");
}
}
class DerivedClass : BaseClass
{
public void Method2()
{
Console.WriteLine("Derived - Method2");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
BaseClass bcdc = new DerivedClass();
bc.Method1();
dc.Method1();
dc.Method2();
bcdc.Method1();
bcdc.Method2();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample4
{
class BaseClass
{
public void Method1()
{
Console.WriteLine("Base - Method1");
}
public void Method2()
{
Console.WriteLine("Base - Method2");
}
}
class DerivedClass : BaseClass
{
public new void Method2()
{
Console.WriteLine("Derived - Method2");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
BaseClass bcdc = new DerivedClass();
bc.Method1();
dc.Method1();
dc.Method2();
bcdc.Method1();
bcdc.Method2();
Console.ReadLine();
}
}
}
کلا به صورت تخصصی تر اگر بخواهیم بگیم، این کلمه new داره چی کار میکنه؟ چون اصولا new یک حافظه ای تخصیص میده. اینجا چطور؟
دوستان اینجا در کلاش مشتق شده، ما چه در متد new رو بزاریم و چه نزاریم. هیچ فرقی نمی کنه. فقط یک warning رو از بین بردیم اگر new رو قبل از نوع برگشتی متد بزاریم.
منتها همش حرف از این زده که اگر new رو نزاریم، نمیدونم متد پنهان میشه و خلاصه کامپایلر نمیدونه کدام متد رو صدا بزنه و میره متد base رو صدا میزنه
منتها ما هر چی تست زدیم هیچ فرقی نکرد!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample4
{
class BaseClass
{
public void Method1()
{
Console.WriteLine("Base - Method1");
}
public void Method2()
{
Console.WriteLine("Base - Method2");
}
}
class DerivedClass : BaseClass
{
public void Method2()
{
Console.WriteLine("Derived - Method2");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
BaseClass bcdc = new DerivedClass();
bc.Method1();
dc.Method1();
dc.Method2();
bcdc.Method1();
bcdc.Method2();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sample4
{
class BaseClass
{
public void Method1()
{
Console.WriteLine("Base - Method1");
}
public void Method2()
{
Console.WriteLine("Base - Method2");
}
}
class DerivedClass : BaseClass
{
public new void Method2()
{
Console.WriteLine("Derived - Method2");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
BaseClass bcdc = new DerivedClass();
bc.Method1();
dc.Method1();
dc.Method2();
bcdc.Method1();
bcdc.Method2();
Console.ReadLine();
}
}
}
کلا به صورت تخصصی تر اگر بخواهیم بگیم، این کلمه new داره چی کار میکنه؟ چون اصولا new یک حافظه ای تخصیص میده. اینجا چطور؟