不可调用的成员不能像方法一样使用

本文关键字:一样 方法 调用 成员 不能 | 更新日期: 2023-09-27 18:26:52

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

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

Non-invocable member 'System.Windows.Forms.Control.Text' cannot be 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");
   }
   }

如何解决此问题?

编辑:修复了错误,现在遇到另一个错误:Argument 4: Cannot convert String to int和我似乎无法解决这个问题。

不可调用的成员不能像方法一样使用

在编写"CriminoBox.Text()"的地方,需要将其替换为"CriminyBox.Text"。这是一个属性,而不是一个方法-线索在错误中!

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

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


顺便说一句,有些别名可能会让你感到困惑,因为有时它是方法或属性,例如:"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.Collections.Generic

using System.Collections.Generic
namespace Teste
{
    public class TestList
    {
        public int Foo()
        {
            var listX = new List<int>();
            return listX.Count;
        }
    }
}

  • 来源-林克:https://msdn.microsoft.com/library/bb338038(v=vs.100).aspx
  • 来源-列表:https://msdn.microsoft.com/pt-br/library/27b47ht3(v=vs.110).aspx

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

如果你得到了这个答案,那是因为上面的答案都不适用于你的情况。毕竟,您试图实例化一个类,而不是使用一个属性。问题是您忘记或意外删除了";新的";关键字。

var obj = YourClass(); // Will throw the non-invocable error.
var obj = new YourClass(); // shhh, it's our secret. We can pretend this never happened.

我遇到了同样的问题,并意识到删除括号是有效的。有时,如果你是唯一一个在代码上工作了一段时间,让别人阅读你的代码可能会很有用。

例如

  cmd.CommandType = CommandType.Text(); 

替换:cmd。CommandType=CommandType.Text;

对于来自谷歌的人来说,如果你调用了一个通用方法,但忘记了一个或多个右三角括号,也会出现这个错误。例如:

// Example 1
var myVar = GetSomeData<AClass();
// Example 2
var myVar2 = GetSomeOtherData<BClass<CClass>();

当方法中没有太多泛型时,这很容易发现,但嵌套越多,这就越难发现。

在我的上下文中,我在调用Count()时遇到了这个错误

解决方案是导入LINQ

using System.Linq;