我无法理解为什么会这样做
using System.Configuration;
ExeConfigurationFileMap temp = ExeConfigurationFileMap(CustomConfigFilePath)
无效。但是,以下行正常运作。
ExeConfigurationFileMap temp = ExeConfigurationFileMap{ ExeConfigFilename = CustomConfigFilePath };
自己检查一下。我在Windows 7中使用.Net 4.0 - 64位。我怀疑这是一个错误。
注意:无需深度潜水。在这一行后放一个断点。在执行中,您可以看到第一个样式(在上面)没有在变量" ExeConfigFilename"上放置任何值。但第二种风格确实如此。
修改 尽管答案非常好,但我还是投票决定关闭它。原因是它对任何人都没用。它只是倾倒空间。所以,请投票结束这个。
答案 0 :(得分:4)
首先;我假设您的代码应该调用构造函数,但是您错过了new
关键字。
回答你的问题:
ExeConfigurationFileMap temp = new ExeConfigurationFileMap(CustomConfigFilePath);
相当于:
ExeConfigurationFileMap temp = new ExeConfigurationFileMap
{
MachineConfigFilename = CustomConfigFilePath
};
constructor argument适用于MachineConfigFilename
,而不适用于您ExeConfigFilename
。
这可能是为什么一个有效,另一个无法获胜的。
答案 1 :(得分:0)
ExeConfigurationFileMap的源代码是:
public sealed class ExeConfigurationFileMap : ConfigurationFileMap
{
string _exeConfigFilename;
string _roamingUserConfigFilename;
string _localUserConfigFilename;
public ExeConfigurationFileMap(string machineConfigFileName)
: base(machineConfigFileName)
{
_exeConfigFilename = String.Empty;
_roamingUserConfigFilename = String.Empty;
_localUserConfigFilename = String.Empty;
}
public string ExeConfigFilename
{
get
{
return _exeConfigFilename;
}
set
{
_exeConfigFilename = value;
}
}
您可以通过属性和构造函数查看设置字段_exeConfigFilename
的方式。
答案 2 :(得分:0)
也许你的意思是以下。
ExeConfigurationFileMap temp
= new ExeConfigurationFileMap(){ ExeConfigFilename = CustomConfigFilePath };
第一个版本无效,因为将字符串作为参数的构造函数将其赋予与ExecConfigFilename
不同的成员。