Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回HelpText类而不是字符串会意外地工作_C#_Implicit Conversion - Fatal编程技术网

C# 返回HelpText类而不是字符串会意外地工作

C# 返回HelpText类而不是字符串会意外地工作,c#,implicit-conversion,C#,Implicit Conversion,我正在使用CommandLine ParserAPI来处理应用程序的命令行参数 在中,有一段代码: [HelpOption] public string GetUsage() { return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current)); } 它确实可以编译 但是,HelpText.AutoBuild()的返回值实际

我正在使用
CommandLine Parser
API来处理应用程序的命令行参数

在中,有一段代码:

 [HelpOption]
  public string GetUsage() {
    return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
  }
它确实可以编译

但是,
HelpText.AutoBuild()的返回值实际上是HelpText实例,它直接继承对象。
此外,AFAIK,string是一个密封类,不能继承


这怎么可能呢?

这种魔力是由一个
隐式运算符字符串所创造的。
帮助文本
类肯定有一个。


示例用法:

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(); 
}