1、什么是构造函数? 有哪些构造函数? 各个构造函数的定义、实现方法、注意事项?
所谓构造函数,就是一个方法,这个方法可以初始化对象,即运行完这个函数后,内存总开辟了一块该类的对象的空间。有三种:正常的构造函数,也就是实例化构造函数;私有构造函数;静态构造函数。
实例化构造器:
public class Example
{
private string property1 = string.Empty;
private string property2 = @"hello";
private int property3 = 0;
public Example()//成员都是声明时的初始值,这种默认的构造器,也可以不写。
{
}
public Example(string p1, string p2, int p3)//传入的值初始化
{
this.property1 = p1;
this.property2 = p2;
this.property3 = p3;
}
}
私有构造器:
私有构造器,外部是不能访问的,那么如何实例化呢,参见单例模式,这里就是用了私有构造函数:
http://blog.csdn.net/yysyangyangyangshan/article/details/6962657
静态构造函数:
先看例子:
public class StaticConstruct
{
static StaticConstruct()
{
Console.WriteLine(@"静态构造函数");
}
public StaticConstruct()
{
Console.WriteLine(@"实例化构造函数");
}
public StaticConstruct(string flage)
{
Console.WriteLine(@"带参构造函数");
}
}
class Program
{
static void Main(string[] args)
{
StaticConstruct strc = new StaticConstruct();
StaticConstruct strcValue = new StaticConstruct(string.Empty);
Console.ReadLine();
}
}
结果:
静态构造函数特点:静态构造函数中不允许出现访问修饰符;实例化的时候,首先自动调用静态构造函数,意即调用静态构造函数是不可控的;静态构造函数是无参的,并且一个类中只有一个;不能被继承。
2、This关键字和Base关键字用途? 实现代码?
(1)、this关键字:
this顾名思义,就是指本类中的意思,引用当前类的成员。当然如果程序在运行中,则可以精确地说,this指当前类的对象的成员,作用就是用来区分对象的。因为一个类可以有N个对象。不过在static类中不能使用this关键字,究其原因,无非是static不可能实例化多个对象,它只有一个,自然没必要去用this来区分对象了。一般常用如下:
a、方法或构造函数中,同名变量。
public class MyTestA
{
private string testA = string.Empty;
public MyTestA(string testA)
{
this.testA = testA;
}
public void Handler(string testA)
{
this.testA = testA;
}
}
b、get,set方法
public class MyTestB
{
private string testB = string.Empty;
public string TestB
{
get
{
return this.testB;
}
set
{
this.testB = value;
}
}
}
c、将实例传递
比如,事件中
public class MyTestC
{
public event EventHandler OnTestCEvent = null;
private void Send_OntestEvent(object sender,EventArgs e)
{
if (OnTestCEvent != null)
{
OnTestCEvent(sender, e);
}
}
private void TestEvent()
{
Send_OntestEvent(this, null);
}
}
public class MyTestD
{
MyTestC testC = new MyTestC();
public event EventHandler OnTestDEvent = null;
private void Send_OnTestDEvent(object sender, EventArgs e)
{
if (OnTestDEvent != null)
{
OnTestDEvent(sender, e);
}
}
public MyTestD()
{
testC.OnTestCEvent += new EventHandler(testC_OnTestEvent);
}
void testC_OnTestEvent(object sender, EventArgs e)
{
Send_OnTestDEvent(sender, e);
}
}
public class MyTestE
{
MyTestD testD = new MyTestD();
public MyTestE()
{
this.testD.OnTestDEvent += new EventHandler(testD_OnTestDEvent);
}
void testD_OnTestDEvent(object sender, EventArgs e)
{
MyTestC testC = sender as MyTestC;//通过MytestD将对象转了过来
if (testC != null)
{
//代码
}
}
}
(2)base关键字:
一般用于,子类访问父类。
一种是,重写父类方法时,
public class ParentClass
{
public virtual void MethodA()
{
Console.WriteLine(@"基类的方法");
}
}
public class ChildClass : ParentClass
{
public override void MethodA()
{
base.MethodA();
Console.WriteLine("派生类方法");
}
}
另一种,子类调用父类构造函数,
public class ParentClass
{
public ParentClass(string flage)
{
Console.WriteLine(@"基类构造函数");
}
public virtual void MethodA()
{
Console.WriteLine(@"基类的方法");
}
}
public class ChildClass : ParentClass
{
public ChildClass(string flage)
: base(flage)
{
}
public override void MethodA()
{
base.MethodA();
Console.WriteLine("派生类方法");
}
}
3、什么是反射? 如何实现反射? 反射有何优缺点? 何时使用反射?
http://blog.csdn.net/yysyangyangyangshan/article/details/7028589
分享到:
相关推荐
c#基础知识 c #基础知识 c#基础知识
C#基础知识:入门与提高的最佳资料! 主要介绍了C#语言基础、Windows编程的基础知识、常用控件和类的使用等!
C#基础知识C#基础知识C#基础知识C#基础知识
C#基础知识思维导图(整理版),较之前的版本,进行了一些整理
对于已经有C#开发知识的研发人员的基础知识进行巩固,比较好的全面过滤。
C#基础知识C#基础知识C#基础知识C#基础知识
01c#基础知识 02c#入门 03编写c#表达式
提供C#基础知识的系统整理,应对期末考试有帮助。
c#基础知识点大全,分条总结。另附winform,css,HTML知识点
C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言...
开发语言:C# 参考网络上流传的《勇者斗恶龙》游戏源码制作的一个射击类游戏,借用了《勇者斗恶龙》的游戏界面及部分源码。 整个游戏框架已基本完成,源码中采用了一些设计模式,有精美的游戏画面和详尽的代码注释,...
c# 基础知识中的一些小知识点,如REF,OUT关键字,类型推断等等。
这是本人整理的C#基础知识,里面包含有C#基本概念,正式的语法规则,知识点总结调理清晰,麻烦各位看看...
数据结构 c#的实现 包括了 算法、线性表、 栈和队列、串和数组、数和二叉树、 图、 排序、 是很好的基础技术资料
C#基础知识集锦:里面包含了C#的所有基础知识结构,对C#基础知识进行了比较全面的总结
c#开发必备基础知识,包括C#字符串和正则表达式参考手册,C#完全手册,C# 语言规范
C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc
如题,C#的Demo项目:RabbitMQ封装和使用, 引用了RabbitMQ.Client 版本:3.6.9 RabbitMQ .NET客户端操作类库, 并简单展示了3种Exchange的使用
很不错的C#基础类例子,看了后就想到把他们贡献出来了
C#常用知识整理