如何在 void C# 中 return bool

how to return bool in void C#

所以我是 C# 的新手,我在创建我自己的“语言”(基本上它需要我的语言并将其转换为 C# 然后编译)我正在编写一个函数来检查是否有东西在string 与否,我遇到了错误 CS0127。我在互联网上做了一些冲浪,但找不到有效的解决方案。这是我的代码。

void CheckQuote(string item, string line)
{
    if (!line.Contains(item))
    {
        // return false
    
    }
}

我正在积极努力,所以当您阅读本文时,情况可能已经改变。

如果你想 'return ' 从一个函数中得到一个布尔值,有几种方法

最明显的是

bool CheckQuote(string item, string line)
{
    if (!line.Contains(item))
    {
         return false
    
    }
    return true;
}

像这样使用 如果(!CheckQuote(“a”,“b”)) // 错误案例

如果由于某种原因该方法必须无效(为什么),您可以这样做

void CheckQuote(string item, string line, out bool result)
{
    if (!line.Contains(item))
    {
        result = false
    
    } else{
       result = false;
}

那就这样称呼吧

 bool check;
 CheckQuote("a", "b", out check);
 if(!check)
    // error case

一种更复杂的方式

 public class Checker{
      bool Result {get;set;}
      void CheckQuote(string item, string line)
      {
          if (!line.Contains(item))
          {
               Result = false;
           } else{
               Result = true;
           }
      }
  }

像这样使用

  Checker check = new Checker();
  check.CheckQuote("a","b");
  if(!check.Result)
      // error case 

但那太过分了

您可以通过将结果存储在 public static 属性 中并在调用“void”方法后读取其值来实现,例如:

public static class TestClass
{
    public static bool PublicProperty { get; set; }
}

所以在你的“无效”方法中你需要像这样存储值:

void CheckQuote(string item, string line)
  {
    if (!line.Contains(item))
     {
       // return false
      TestClass.PublicProperty = false;
     }
  }

调用“void”方法后,您可以像这样读取 属性 值:

var someVariable = TestClass.PublicProperty;

但这不实用 不要使用 void 而是将其用作布尔方法

bool CheckQuote(string item, string line)
  {
    if (!line.Contains(item))
     {
       return false          
     }
     return true;
  }