关于C#类的构造函数重载 有一问题:想在类的构造函数中传入多个变量,其中有几个变量想有默认值,但C#不支持,只能重载。class C1{ public C1() { C1(""); } public C1(String s) { ..... }}但是在编译的时候报错,此想法如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class C1{ public C1() : this("") { } public C1(String s) { ..... }} class C1{ private string str = string.Empty; public C1() { } public C1(String s) { str = s; }} 1楼正解,调用别的构造函数要用thispublic C1() : this("")调用基类构造函数用base 注意重载不能发生签名一致的情况。class C1{ private string str ; private string name; public C1() { } public C1(string s) { str = s; } public C1(string name){ this.name=name;}}上面就会发生错误 构造函数比较特殊,因为它是由系统自动调用的,所以其不能在任何方法中被调用,即使是调用方法也是构造函数。但是有时候又在构造函数中调用另一个签名的构造函数,所以C#提供了一种语法,即this。显然构造函数不能被任何函数所调用是有道理的。如果能被调用,那他的返回值该是多少?是不是新创建一个实例? public C1() { C1(""); }这样是创建一个实例还是两个实例?C1("")返回值是多少?如果创建两个实例,那么通过new那边的代码得到的是什么? to viena(维也纳N02) :调用别的构造函数要用this调用基类构造函数用base,在什么地方可以找到这样的资料? 我记得MSDN WEBCAST上有篇讲到过这个东东,我找找再贴 C#语言规范里面就能找到,VS的帮助里面也有,多看帮助很多问题就没了…… TO Javesun:建议您安装Visual Studio同时安装MSDN,这样的问题90%可以从那里找到答案。 class C1 { private string str; public C1() :this("") { } public C1(String s) { str = s; } }这样在通过C1()创建对象时也能执行C1(String s)中的初始化代码,C1(String s)中可能不仅仅是设置变量的默认值,还会有一些其他的初始化代码,如在C1()中也要执行相同的初始货代码,为了避免重复,可在C1()后面加this("")来使用C1()创建对象时也能执行C1(String s)中的初始化代码,这才是在某一构造函数中使用this进行调用其他构造函数的原因. 请问高手如何让WebBrowser直接显示变量内容 关于WCF的X509证书认证问题 .Net 2.0 没有 System.Net 么? c# 方法引用问题!! datalist绑定滚动图片问题? asp.net datagrid排序的问题 DataTable select 查询唯一数据 这个问题困扰我好几天了,各位帮参考一下! 关于窗体继承中的事件问题!!! C# Winfrom中webBrowser1如何捕获js代码中的windows.open()里的url C# 权限问题 求教高人 怎样把PrintPreviewDialog的默认缩放比率改100%?
{
public C1() : this("")
{ }
public C1(String s)
{
.....
}
}
{
private string str = string.Empty;
public C1()
{
}
public C1(String s)
{
str = s;
}
}
public C1() : this("")调用基类构造函数用base
class C1
{
private string str ;
private string name; public C1()
{
} public C1(string s)
{
str = s;
}
public C1(string name)
{
this.name=name;
}
}上面就会发生错误
{
C1("");
}这样是创建一个实例还是两个实例?
C1("")返回值是多少?
如果创建两个实例,那么通过new那边的代码得到的是什么?
调用基类构造函数用base,
在什么地方可以找到这样的资料?
我找找再贴
建议您安装Visual Studio同时安装MSDN,这样的问题90%可以从那里找到答案。
{
private string str;
public C1() :this("")
{
}
public C1(String s)
{
str = s;
}
}
这样在通过C1()创建对象时也能执行C1(String s)中的初始化代码,C1(String s)中可能不仅仅是设置变量的默认值,还会有一些其他的初始化代码,如在C1()中也要执行相同的初始货代码,为了避免重复,可在C1()后面加this("")来使用C1()创建对象时也能执行C1(String s)中的初始化代码,这才是在某一构造函数中使用this进行调用其他构造函数的原因.