不可调用的成员不能像方法一样使用
本文关键字:一样 方法 调用 成员 不能 | 更新日期: 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;