C# 非invocable成员不能像方法一样使用?

C# 非invocable成员不能像方法一样使用?,c#,C#,我的程序中不断出现以下错误: 'System.Windows.Forms.TextBox.Text' is a 'property' but used like a 'method' 及 代码如下: if (OffenceBox.Text != "") { AddBook(int.Parse(AgeBox.Text), NameBox.Text, AddressBox.Text, (HeightBox.Text), OffenceBox.Text()); } else

我的程序中不断出现以下错误:

'System.Windows.Forms.TextBox.Text' is a 'property' but used like a 'method'

代码如下:

if (OffenceBox.Text != "")
   {
 AddBook(int.Parse(AgeBox.Text), NameBox.Text, AddressBox.Text, (HeightBox.Text), OffenceBox.Text());
   }
   else
   {
   MessageBox.Show("Age must be max 3 numbers in length");
   }
   }
我如何解决这个问题

编辑: 已修复错误,现在遇到另一个错误:
参数4:无法将字符串转换为int,而且我似乎无法解决问题。

正如错误明确指出的那样,
OffenceBox.Text()
不是函数,因此没有意义。

如果您编写了“OffenceBox.Text()”,则需要将其替换为“OffenceBox.Text”。这是一个属性,不是一个方法-线索在错误中

之所以发生这种情况,是因为您试图像使用方法一样使用属性“OffenceBox.Text”。尝试从
OffenceBox.Text()
中删除parentese,它将正常工作

请记住,不能在类中创建具有相同名称的方法和属性


顺便说一句,有些别名可能会让您感到困惑,因为有时它是方法或属性,例如:“Count”别名:


名称空间:System.Linq

using System.Linq

namespace Teste
{
    public class TestLinq
    {
        public return Foo()
        {
            var listX = new List<int>();
            return listX.Count(x => x.Id == 1);
        }
    }
}
使用System.Linq
名称空间测试
{
公共类TestLinq
{
公众返回Foo()
{
var listX=新列表();
返回listX.Count(x=>x.Id==1);
}
}
}

命名空间:System.Collections.Generic

using System.Collections.Generic

namespace Teste
{
    public class TestList
    {
        public int Foo()
        {
            var listX = new List<int>();
            return listX.Count;
        }
    }
}
使用System.Collections.Generic
名称空间测试
{
公共类测试列表
{
公共int Foo()
{
var listX=新列表();
返回listX.Count;
}
}
}

  • 资料来源:林克:
  • 资料来源-名单:

    • 我也有同样的问题,我意识到去掉括号是有效的。 有时,如果您是一段时间以来唯一一个处理代码的人,那么让其他人阅读您的代码可能会很有用

      例如

      替换:
      cmd.CommandType=CommandType.Text

      这是可行的,但我遇到了另一个问题,
      参数4:无法将字符串转换为int
      ,而且我似乎无法修复它。int.Parse(HeightBox.Text)而不是(HeightBox.Text)。Text属性的类型为string,因此您需要尝试将其转换为int,就像对AgeBox.Text所做的那样。其中的一个框可能无法转换为int,因此您需要捕获结果异常。
      using System.Collections.Generic
      
      namespace Teste
      {
          public class TestList
          {
              public int Foo()
              {
                  var listX = new List<int>();
                  return listX.Count;
              }
          }
      }
      
        cmd.CommandType = CommandType.Text();