: base(name)是什么意思呢?

hackem 2010-07-19 07:57:09
class Man : Person
public Man(sring name)
: base(name)
{}


这里的: base(name) {}是什么意思呢?
我没学过c#,看一些C#的程序遇到的,来教教大家。

还有,在动态语言里
p = Man.new //这样就创建了man对象了。
为什么在c#里有这样的用法的呢?

Person person = new Man
为什么创建一个man对象给person,要在前面用Person这样来声明的?

...全文
548 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
dazhabai 2010-07-20
  • 打赏
  • 举报
回复
此构造函数执行时先走它的基类的构造函数,这说明person这个基类也有一个参数为string的构造函数
leiziaitudou 2010-07-19
  • 打赏
  • 举报
回复
调用父类构造函数
jianuMan 2010-07-19
  • 打赏
  • 举报
回复
base 调用基类构造函数 name是参数名称
ACMAIN_CHM 2010-07-19
  • 打赏
  • 举报
回复
基类



showjancn 2010-07-19
  • 打赏
  • 举报
回复
调用基类的构造函数。
有时基类的私有成员无法进行附值,但可以通这种试很好的解决。
onenewsmile 2010-07-19
  • 打赏
  • 举报
回复
: base(name)
调用父类构造函数,是一种简化的写法。
兔子-顾问 2010-07-19
  • 打赏
  • 举报
回复
base()
调用父类构造函数
this()
调用自己的另一个构造函数重载
捷哥1999 2010-07-19
  • 打赏
  • 举报
回复
base(name)是去调用基类(父类)的构造函数,该构造函数有一个string类型的参数
yujingyang 2010-07-19
  • 打赏
  • 举报
回复
base()是父类的构造函数
dancingbit 2010-07-19
  • 打赏
  • 举报
回复
1.base在这里是调用基类构造函数。
2.不同于动态语言,在C#中,变量在使用之前必须先明确地声明。
这里是声明了一个基类变量,然后new一个派生类对象赋给它。

healer_kx 2010-07-19
  • 打赏
  • 举报
回复
构造函数中初始化成员的方式,而且推崇这种方式。
wuyq11 2010-07-19
  • 打赏
  • 举报
回复
可以被自己的其它构造方法使用
base常用于,在派生类对象初始化时和基类进行通信。
base可以访问基类的公有成员和受保护成员,私有成员是不可访问的
base是为了实现多态而设计
尽量少用或者不用base
mayonglong 2010-07-19
  • 打赏
  • 举报
回复
这里是引用基类构造函数

C# base和this
happyer_longlong 2010-07-19
  • 打赏
  • 举报
回复
说明这个 Man 类继承了person 类
happychou 2010-07-19
  • 打赏
  • 举报
回复
base 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。
指定创建派生类实例时应调用的基类构造函数。
基类访问只能在构造函数、实例方法或实例属性访问器中进行。

示例:
在派生类中调用基类方法。
// base 关键字
// 访问基类成员
using System;

public class BaseClass
{
protected string _className = "BaseClass";

public virtual void PrintName()
{
Console.WriteLine("Class Name: {0}", _className);
}
}

class DerivedClass : BaseClass
{
public string _className = "DerivedClass";

public override void PrintName()
{
Console.Write("The BaseClass Name is {0}");
//调用基类方法
base.PrintName();
Console.WriteLine("This DerivedClass is {0}", _className);
}
}

class TestApp
{
public static void Main()
{
DerivedClass dc = new DerivedClass();
dc.PrintName();
}
}

/**//*
控制台输出:
The BaseClass Name is BaseClass
This DerivedClass is DerivedClass
*/
在派生类中调用基类构造函数。
// keywords_base2.cs
using System;
public class BaseClass
{
int num;

public BaseClass()
{
Console.WriteLine("in BaseClass()");
}

public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int {0})", num);
}
}

public class DerivedClass : BaseClass
{
// 该构造器调用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}

// 该构造器调用 BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
}

static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1);
}
}

/**//*
控制台输出:
in BaseClass()
in BaseClass(1)
*/

注意点

从静态方法中使用 base 关键字是错误的。
isaced 2010-07-19
  • 打赏
  • 举报
回复
base 关键字用于从派生类中访问基类的成员:

•调用基类上已被其他方法重写的方法。

•指定创建派生类实例时应调用的基类构造函数。

基类访问只能在构造函数、实例方法或实例属性访问器中进行。

从静态方法中使用 base 关键字是错误的。

所访问的基类是类声明中指定的基类。例如,如果指定 class ClassB : ClassA,则无论 ClassA 的基类如何,从 ClassB 上访问 ClassA 的成员。
isaced 2010-07-19
  • 打赏
  • 举报
回复
关于base可以参考:http://msdn.microsoft.com/zh-cn/library/hfw7t1ce.aspx

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧