我有5年的经验,但说实话,我知道并使用这个构思...
Baseclass bc = new DerivedClass();
我不知道它实际上会做什么,不是真的,不是真的。它是衍生的类还是基础类?我知道如果我叫Bc.Method(),我会得到衍生的类方法。但是,只有当我使用新的关键词或超文本或其它东西时,我才会知道。说实话,我在这里开始变得有点模糊,我认为我需要用这个回到基本方面,有人能指向我正确的方向吗?
我有5年的经验,但说实话,我知道并使用这个构思...
Baseclass bc = new DerivedClass();
我不知道它实际上会做什么,不是真的,不是真的。它是衍生的类还是基础类?我知道如果我叫Bc.Method(),我会得到衍生的类方法。但是,只有当我使用新的关键词或超文本或其它东西时,我才会知道。说实话,我在这里开始变得有点模糊,我认为我需要用这个回到基本方面,有人能指向我正确的方向吗?
您正在创建一个“ 衍生” 实例, 并将其分配到一个 BasicClass 类型的变量中。 如果您有类似底等类的动物, 包括两个衍生的鱼类和狗类, 这可能有用, 但是您不知道其中哪一个将被即时引用, 这在您的上下文中并不重要, 因为您要引用一个在底等中定义的方法 。 例如, 您可以有类似的方法 :
Animal a;
if (whatever you want)
a = new Dog();
else
a = new Fish();
a.Feed();
使用修饰剂要小心, 因为如果您用虚拟定义动物喂养, 并用虚拟定义它, 在鱼体内重新定义它, 则将执行 Fish 版本( 它在执行时被链接 ) 。 如果您不将基版标为虚拟版本, 并将Fish 版本标为新版本, 则执行动物版本( 它在编译时被链接 ) 。
它创造了一个 DerivedClass
和 的例子,“http://msdn.microsoft.com/en-us/library/ms173105%28v=vs.100%29.aspx" rel=“nofollow” >, 暗中投放 键入 Base类
。
正如我所假设的,这汇编了它的意思,即从DerivedClass
继承的Baseclas
,例如:
class DerivedClass : Baseclass
{
}
或者有",http://msdn.microsoft.com/en-us/library/z5z9kes2%28v=vs.100%29.aspx" rel=“nofollow” >imclic caulter ,用于在这些类型之间铸造,例如:
class DerivedClass
{
public static implicit operator Baseclass(DerivedClass d)
{
// return a Baseclass here
}
}
使用以下
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Employee : Person
{
public string RoleName { get; set; }
}
如果我们创建一个新的 Employee
实例,但事实上我们的变量声明是 Person
, 将发生的一切都是隐含的投影到 Person
, 意思是说我们不会接触 Employee
中的任何方法或属性。我想,如果Eployee
的构建者影响Person
的构建者,但不管在Employee
中,我们不关心任何事情,但我建议不这样做。相反,我建议构建一种方法,使用更清晰的多元形态。这就是当衍生的物体被用作参数时,如果事实上参数类型是其基底之一,例如当参数类型被使用时,这可能是有用的。
public void DoSomething(Employee employee)
{
// here we do something with an employee
// ...
string fullName = GetTheirFullName(employee);
}
public string GetTheirFullName(Person person)
{
return (person.FirstName + " " + person.LastName).Trim();
}
它只是创建一个 DerivedClass
实例, 并将其指定为 bc, 即属于 BaseClass 类型 。
What is the use of default keyword in C#? Is it introduced in C# 3.0 ?
I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...
I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
I have two EF entities. One has a property called HouseNumber. The other has two properties, one called StartHouseNumber and one called EndHouseNumber. I want to create a many to many association ...
How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...
Since I cannot order my dictionary, what is the best way of going about taking key value pairs and also maintaing an index?
Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...