C#构造函数里的base和this的区别
来源:互联网 发布:淘宝上买东西如何退货 编辑:程序博客网 时间:2024/05/17 00:18
用法一:
父类的构造函数总是在子类之前执行的。既先初始化静态构造函数,后初始化子类构造函数。
public
class
BaseCircle {
public
BaseCircle()
{
Console.WriteLine(
" no arguments base constructor!!!"
);
}
public
BaseCircle(
double
arg)
{
Console.WriteLine(
"double arg base constructor!!!"
);
}
}
public
class
SubCircle : BaseCircle {
public
SubCircle():
base
()
{
Console.WriteLine(
"sub class no argument constructor,actually call base constructor !!!"
);
}
public
SubCircle(
double
a):
base
(a)
{
Console.WriteLine(
"sub class with argument, actually call base double constructor!!!"
);
}
public
SubCircle(
int
k):
this
(1,2)
{
Console.WriteLine(
"sub class with argument int k, actually call sub class constructor int i & j !!!"
);
}
public
SubCircle(
int
i,
int
j)
{
Console.WriteLine(
"sub class with int i&j argument!!!!"
);
}
}
static
void
Main(
string
[] args)
{
SubCircle s1 =
new
SubCircle();
SubCircle s2 =
new
SubCircle(1.1);
SubCircle s3 =
new
SubCircle(1);
}
输出结果:
no arguments
base
constructor!!!
sub
class
no argument constructor,actually call
base
constructor !!!
double
arg
base
constructor!!!
sub
class
with argument, actually call
base
double
constructor!!!
no arguments
base
constructor!!!
sub
class
with
int
i&j argument!!!!
sub
class
with argument
int
k, actually call sub
class
constructor
int
i & j !!!
用法二:
是不是很模糊这两个关键字那?
哈,现在我来写份代码,代码可是最有说服力的啦!
class
BaseClass
{
private
int
numA;
public
BaseClass()
{
Console.WriteLine(
"基类的无参数构造函数. value:{0}"
, numA);
}
public
BaseClass(
int
i)
{
this
.numA = i;
Console.WriteLine(
"基类带一个参数的构造函数. value:{0}"
, numA);
}
}
class
ChildClassA : BaseClass
{
private
int
numB;
public
ChildClassA()
{
Console.WriteLine(
"子类无参数构造函数. value:{0}"
, numB);
}
public
ChildClassA(
int
i)
{
this
.numB = i;
Console.WriteLine(
"子类带有一个参数的构造函数. value:{0}"
, numB);
}
public
ChildClassA(
int
i,
int
j)
:
base
(i)
{
this
.numB = j;
Console.WriteLine(
"子类带有两个参数的构造函数. value:{0}"
, numB);
}
}
class
ChildClassB : BaseClass
{
private
int
numB;
public
ChildClassB()
{
Console.WriteLine(
"子类无参数构造函数. value:{0}"
, numB);
}
public
ChildClassB(
int
i)
{
this
.numB = i;
Console.WriteLine(
"子类带有一个参数的构造函数. value:{0}"
, numB);
}
public
ChildClassB(
int
i,
int
j)
:
this
(i)
{
this
.numB = j;
Console.WriteLine(
"子类带有两个参数的构造函数. value:{0}"
, numB);
}
}
class
Demo
{
static
void
Main(
string
[] args)
{
Console.WriteLine(
"使用base\n"
);
ChildClassA a =
new
ChildClassA(2, 4);
Console.WriteLine();
Console.WriteLine(
"----------------------------------------\n"
);
Console.WriteLine(
"使用this\n"
);
ChildClassB b =
new
ChildClassB(2, 4);
Console.ReadKey();
}
}
执行的结果如下:
--------------------------------结果----------------------------------
使用
base
基类带一个参数的构造函数. value:2
子类带有两个参数的构造函数. value:4
----------------------------------------
使用
this
基类的无参数构造函数. value:0
子类带有一个参数的构造函数. value:2
子类带有两个参数的构造函数. value:4
--------------------------------结果----------------------------------
this
只是调用本身,但是这样是需要调用一次基类没有参的构造函数,所以会多显示一条“基类的无参数构造函数. value:0”。
base
是调用基类的有参数构造函数。
够简洁明了吧,看了就懂,希望能给网友一些帮助。
转自:http://www.cnblogs.com/zfanlong1314/p/3591453.html
0 0
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this的区别
- C#构造函数里的base和this
- 构造函数中base和this的用法与区别
- 构造函数中base和this的用法与区别
- c#中this和base的区别
- C# base和this的区别
- base 和this的区别
- .Net C#语法 构造函数中this和base
- .Net C#语法 构造函数中this和base
- c# base和this在构造函数中的应用
- C#中base跟this的区别
- C#中this与base的区别
- C++ 和 C# 构造函数的区别
- C++和C#构造函数的区别
- Spring MVC 教程,快速入门,深入分析
- 为什么毕业三四年之后,同学之间的差距会这么大?
- 多线程:图形的异步加载和线程的资…
- CString 转 char *
- GCD的队列,死锁
- C#构造函数里的base和this的区别
- UI单例类的设计,GCD的图片加载
- protobuf 学习笔记
- UIGCD的用法,组任务
- 切换sts的svn账号密码
- Java静态类Static
- UI网络编程:get和post
- OJ-POJ1020-DFS
- cordova camera插件 问题之一 html里面写了button click 失效