【发布时间】:2015-05-09 11:22:02
【问题描述】:
我很确定我在重复一个问题,但是在我的示例中它不起作用,请查看代码:
class Program
{
static void Main(string[] args)
{
Test test1 = new Test("str", "strrr");
}
}
class Test
{
public string testValue, mType;
public Test(string value, string messageType)
{
this.testValue = value;
this.mType = messageType;
}
public Test (string value) : this (value, messageType)
{
//want to manipulate value and messageType here
}
}
这个构造函数public Test (string value) : this (value, messageType) 中的messageType 表示它在当前上下文中不存在。我想以这种方式调用它,因为首先我希望我的代码用两个字符串实例化该类,然后我只想为一个参数构造函数提供值但不丢失messageType,因为我将在此构造函数中使用它public Test (string value)。我阅读了有关链接和实例化构造函数的信息,但似乎这与我阅读的内容相反。抱歉,如果这是一个简单的问题,还没有太多的编程练习,我想知道代码的外观。在提出这个问题之前我读过的内容:Call one constructor from another、How call constructor inside other constructor?、http://www.csharp411.com/constructor-chaining/,它对我不起作用,如果我在重复或做愚蠢的事情,再次抱歉。
【问题讨论】:
-
要使用自定义参数调用不同的构造函数,它们需要能够在“构造函数空间”中进行评估。或静态变量
-
第二个构造函数中的
messageType是什么?它来自哪里? -
如果可以,你能提供一个例子吗?
-
它应该来自第一个构造函数,因为实例化对象我给了他字符串 strrr,它应该放在那个变量 messageType 中,构造函数
public Test (string value) : this (value, messageType)应该使用它。因为它在里面会被操纵。 -
为什么你不使用
value在需要两个参数的重载中?
标签: c# oop constructor chaining