示例:
public static string BoolToYesOrNo(this bool text, out string outAsHtmlName)
{
string[] choices = { "Yes", "No", "N/A" };
switch (text)
{
case true: outAsHtmlName = choices[0]; return choices[0];
case false: outAsHtmlName = choices[1]; return choices[1];
default: outAsHtmlName = choices[2]; return choices[2];
}
}
抛出一个异常,没有重载......需要1个参数,尽管我使用了2个参数。
myBool.BoolToYesOrNo(out htmlClassName);
这是一个确切的例外:CS1501:方法'BoolToYesOrNo'没有重载需要1个参数。
答案 0 :(得分:2)
这对我的代码很好用:
static void Main()
{
bool x = true;
string html;
string s = x.BoolToYesOrNo(out html);
}
最有可能的是,您缺少using
指向声明BoolToYesOrNo
类型的命名空间的指令,因此请添加:
using The.Correct.Namespace;
到代码文件的顶部,其中:
namespace The.Correct.Namespace {
public static class SomeType {
public static string BoolToYesOrNo(this ...) {...}
}
}
答案 1 :(得分:1)
我以这种方式尝试了您的代码,它没有任何例外,我唯一要指出的是giving a parameter with out
然后您不需要该方法来执行任何return of string
bool b = true;
string htmlName;
string boolToYesOrNo = b.BoolToYesOrNo(out htmlName);
答案 2 :(得分:0)
这就是我测试它的方法:
program.cs
更改为(省略using
s)
namespace ConsoleApplication1
{
public static class testClass
{
public static string BoolToYesOrNo(this bool text, out string outAsHtmlName)
{
string[] choices = { "Yes", "No", "N/A" };
switch (text)
{
case true: outAsHtmlName = choices[0]; return choices[0];
case false: outAsHtmlName = choices[1]; return choices[1];
default: outAsHtmlName = choices[2]; return choices[2];
}
}
}
class Program
{
static void Main(string[] args)
{
bool b = true;
string result = string.Empty;
string retval = b.BoolToYesOrNo(out result);
Console.WriteLine(retval + ", " + result); //output: "Yes, Yes";
}
}
}
答案 3 :(得分:0)
我只是粘贴您的代码,它工作正常。我尝试了.net 3.5和4.0,没有显示编译错误,结果是正确的。
为什么这是一种重载方法?
答案 4 :(得分:0)
在MS论坛上找到答案,是一个vs 2012 bug,安装2012年7月更新后,一切正常。谢谢。