返回 HelpText class 而不是字符串意外地工作
Returning HelpText class instead of string works unexpectedly
我正在使用 CommandLine Parser
API 来处理我的应用程序的命令行参数。
在sample page中有一段代码:
[HelpOption]
public string GetUsage() {
return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
}
编译。
但是,实际上 HelpText.AutoBuild()
的 return 值是 HelpText 实例,它直接继承对象。
而且,据我所知,字符串是一个密封的class,不能被继承。
怎么会这样?
这种魔法是由implicit operator string
(See MSDN)创造的。
HelpText
class肯定有一个
示例用法:
public class A
{
......
public override String ToString()
{
return "AAA" ;
}
public static implicit operator string (A a)
{
return a.ToString() ;
}
}
它允许你做这样的事情:
string aString = new A() ; // new A().ToString() is called by the implicit operator
当然,您可以这样做:
public string MethodMan()
{
return new A();
}
我正在使用 CommandLine Parser
API 来处理我的应用程序的命令行参数。
在sample page中有一段代码:
[HelpOption]
public string GetUsage() {
return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
}
编译。
但是,实际上 HelpText.AutoBuild()
的 return 值是 HelpText 实例,它直接继承对象。
而且,据我所知,字符串是一个密封的class,不能被继承。
怎么会这样?
这种魔法是由implicit operator string
(See MSDN)创造的。
HelpText
class肯定有一个
示例用法:
public class A
{
......
public override String ToString()
{
return "AAA" ;
}
public static implicit operator string (A a)
{
return a.ToString() ;
}
}
它允许你做这样的事情:
string aString = new A() ; // new A().ToString() is called by the implicit operator
当然,您可以这样做:
public string MethodMan()
{
return new A();
}