我有多个构造函数,比如class a1
{
public a1(string b1)
{
}
public a1(MyData b2)
}
那么我如何在第一个构造函数中用b1生成一个MyData类再去调用第二个构造函数呢?直接用:this()似乎不可以。
vb是可以做到的,C#对应的方法是什么呢?
{
public a1(string b1)
{
}
public a1(MyData b2)
}
那么我如何在第一个构造函数中用b1生成一个MyData类再去调用第二个构造函数呢?直接用:this()似乎不可以。
vb是可以做到的,C#对应的方法是什么呢?
解决方案 »
- Winform中有没有session 如果有命名空间是什么 如果没有请帮忙解决一个问题
- release生成的exe不能用,因为程序主入口点Application.Run()参数改成了getInstance。
- 请问vs2003里面的水晶报表工具怎么自定义函数??
- 请问一下,如果我是用FCK编辑器来编辑的文本插入数据库,在页面上直接输出,后台第代码怎么写,谢谢!
- 请问用MailMessage发送Base64邮件怎么实现?
- 怎么在Winform中传值给水晶报表中的 TextObject,是高手就来一下(在线等)
- 请教IE编程的高手!!用C#实现多页面浏览器遇到的问题。解决后在送100
- 一个图片处理的问题
- 窗体之间传值问题(C#)
- 返回字段的标题
- c#.net配合UK
- 哪位兄弟做过RS232 或者 485 读温控器的啊?
class a1
{
public a1(string b1):this(new MyData(b1))
{
}
public a1(MyData b2)
}
class a1 = new a1(b2);
一个规则,构造函数最好是链式的,一个调用一个的方式。你也正在考虑这样设计。这样设计是很好的。如果实在无法链式的串起来。就分支,把公共的操作放在无参构造函数中,如果不希望外面用,那无参构造函数定义为private的好了。
public class MyGZ
{
public MyGZ(XmlDocument PackageList)
{ }
public MyGZ(string PackageListString)
{
XmlDocument d = new XmlDocument();
d.LoadXml(PackageListString);
//在这里怎么去调用第一个构造函数呢?
}
}
“链式构造函数”没有必要。原因:
1 “链式构造函数”的重载参数类型完全可以在类内部转化,没必要在构造函数上链式转化。
2 即使你确实需要这种形式,可以采用“修饰模式”的方式实现,你可以参考IOStream 体系的用法。
public class MyGZ
{
public MyGZ(XmlDocument PackageList)
{ }
public MyGZ(string PackageListString)
{
XmlDocument d = new XmlDocument();
d.LoadXml(PackageListString);
//在这里怎么去调用第一个构造函数呢?
MyGZ(d);
}
}
{
public MyGZ(XmlDocument PackageList)
{ }
public MyGZ(string PackageListString):this(new XmlDocument().LoadXml(PackageListString))
{
}
}
var a = new a1(new a1(b1));
貌似vb.net里的new只能在构造函数第一行吧
完全不同的话需要一个方法进行转化var a = new a1(new a1(b1).tomydata());