首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c# Flappybird“不可调用的成员不能像方法一样使用”

C# Flappybird是一个基于C#编程语言开发的Flappy Bird游戏。在C#中,当出现“不可调用的成员不能像方法一样使用”错误时,通常是因为尝试调用一个不可调用的成员,例如一个字段或属性。

这个错误通常发生在以下几种情况下:

  1. 调用一个字段:字段是类中的一个变量,不能像方法一样直接调用。如果想要使用字段的值,应该使用字段的名称而不是尝试调用它。
  2. 调用一个属性:属性是类中的一种特殊成员,它提供了对私有字段的访问和修改。属性的调用方式类似于方法,但是应该使用属性的名称而不是尝试调用它。
  3. 调用一个不可访问的成员:有时候,类中的成员可能被设置为私有或受保护的,这意味着它们只能在类内部访问。如果尝试在类外部调用这些成员,就会出现“不可调用的成员不能像方法一样使用”错误。

解决这个问题的方法取决于具体的情况:

  1. 如果尝试调用一个字段,应该使用字段的名称而不是尝试调用它。例如,如果有一个名为score的字段,应该使用score而不是score()来获取它的值。
  2. 如果尝试调用一个属性,同样应该使用属性的名称而不是尝试调用它。例如,如果有一个名为Score的属性,应该使用Score而不是Score()来获取它的值。
  3. 如果尝试调用一个不可访问的成员,需要检查该成员的访问修饰符。如果需要在类外部访问该成员,可以将其访问修饰符更改为public或internal。

总结:当出现“不可调用的成员不能像方法一样使用”错误时,应该检查代码中尝试调用的成员类型(字段、属性)以及其访问修饰符。确保使用正确的方式来访问和调用成员,以避免该错误的发生。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类成员 | 使用 对象名.‘成员名‘ 访问类成员 | 使用 对象名 访问类成员 )

文章目录 一、使用 对象名.成员名 访问 Groovy 类成员 二、使用 对象名.'...成员名' 访问 Groovy 类成员 三、使用 对象名['成员名'] 访问 Groovy 类成员 四、完整代码示例 一、使用 对象名.成员名 访问 Groovy 类成员 ---- 对 对象名.成员名..." student.age = 16 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法 ; // 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法 println student.name...‘成员名’ 访问 Groovy 类成员 ---- 可以使用 对象名....age' 执行结果 : Han 32 三、使用 对象名[‘成员名’] 访问 Groovy 类成员 ---- 使用 对象名[‘成员名’] 访问 Groovy 类成员 , 相当于调用 getAt 方法

2.3K20

【Unity3D】Unity 中使用 C# 调用 Java ② ( C# 调用 Java 相关方法介绍 | 调用 Java 方法 | 获取 Java 字段 | 设置 Java 字段 )

文章目录 一、 C# 调用 Java 相关方法介绍 1、 AndroidJavaClass 原型 2、 调用 Java 方法 调用普通方法 调用静态方法 3、 获取 Java 字段 获取普通字段...Android 工程 ) 博客中将 Unity 项目导出为了 Android 项目 , 并在 Android Studio 中编译并运行了该项目 ; 使用 C# 脚本 , 是在 【Unity3D】Unity...游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 ) 系列博客中编写脚本 ; 在上一篇博客 【Unity3D】Unity 中使用 C#..., 该字节码文件已拷贝到 Unity 编辑器中 ; 一、 C# 调用 Java 相关方法介绍 ---- 在 Unity C# 脚本 中 , 通过 AndroidJavaClass , 用于调用...类 , 也可以调用方法 ; 在 GetStatic 方法使用泛型标注字段类型 , 使用字段类型变量接收获取字段值 ; AndroidJavaObject#GetStatic 方法原型如下 :

2K10
  • 使用 C# dynamic 关键字调用类型方法时可能遇到各种问题

    你可以使用 dynamic 来定义一个变量或者字段,随后你可以弱类型语言一样调用这个实例各种方法,就像你一开始就知道这个类型所有属性和方法一样。..."); object GetSomeInstance() { return 诡异东西; } 我们 GetSomeInstance 明明返回是 object,我们却可以调用真实类中方法...接下来讲述使用 dynamic 过程中可能会遇到问题和解决方法。 编译错误:缺少编译器要求成员 你初次在你项目中引入 dynamic 关键字后,会出现编译错误,提示 “缺少编译器要求成员”。...{0} 是类型名称,而 {1} 是使用 dynamic 访问属性或者方法名称。...”未包含“Key”定义” 出现此异常原因是: dynamic 所引用对象里面,没有签名相同 public 属性或者方法 于是,如果你确认你类型里面是有这个属性或者方法的话,那么就需要注意需要将此成员改成

    68930

    【Unity3D】Android Studio 工程中使用 Java 代码调用 Unity C# 脚本 ( Java 中调用 UnityPlayer#UnitySendMessage 方法 )

    方法简介 三、 准备 C# 脚本 四、 Java 示例 一、 Java 调用 C# 依赖库准备 ---- 1、依赖库位置 在 Android 中调用 Unity C# 脚本 , 需要借助 Unity...拷贝到要调用 C# 脚本模块下 , 引入依赖即可使用 ; 将依赖库拷贝到 libs 目录下 , 右键点击依赖库 , 然后选择 Add as Library 选项 , 将其添加到依赖中 ; 如果 在...方法简介 ---- 在 com.unity3d.player.UnityPlayer 类中 , 调用 UnitySendMessage 方法 , 可以调用 C# 脚本中方法 ; 第一个参数 String...调用 C# 测试方法"); } 该脚本附着到 名称为 Cube 立方体上 , 之后在 Java 中调用 C# 脚本方法 , 需要根据 游戏物体 GameObject 查找 C# 脚本 ; 完整代码...C# 测试方法"); } } 四、 Java 示例 ---- 在 Java 代码中 , 调用 // 调用 C# 脚本中方法 UnityPlayer.UnitySendMessage

    1.9K20

    微软员工聊C#IDisposable接口

    按官方“规矩”,你得显式调用所有这些对象 Dispose 方法进行“释放”,而不能依赖 GC 进行回收。...作为一个眼睛雪亮旁观者,我开始怀疑 C#那些 Semaphore 之类小东西是否真的需要显式“释放资源”。...因为把引用设为 null 并不等于 C 语言里面的 free,它并不能立即回收那份内存,就算你对象里面有一个很大数组也一样。...无论你是否调用它们 Dispose 方法,系统性能都一模一样。只不过如果你调用 Dispose,计算花时间还要稍微多一些。...许多对象都实现 IDisposable 接口,却没有任何对象真正调用 Dispose 方法。最终结果跟你什么都不做是一样,只不过代码变复杂了,还浪费了时间和精力。

    23540

    C#

    C#是面向对象语言,它使用类来进行抽象。在C#里,把类之中变量统称为“数据成员”;类函数称为“方法”。它类基本和C++是相似的。下面是一个非常简单类。...因此,每一个C#类都拥有一个共同基类。 C#值允许单继承,但是C#支持接口。 C#子类不能继承父类构造函数以及析构函数。...而是可以C++一样,在子类构造函数中使用初始化列表方式去调用父类构造函数。 C#static变量,只能通过类名来访问,不能通过实例化对象来访问。...C#里结构体是值类型,而类是引用类型,这点和C++是完全不同C#函数成员提供功能包括方法,属性,构造函数和终结器,运算符以及索引。 C#有一种比较特殊成员,称之为“属性”。...它通常包含一对方法(get和set方法)。在类使用者看来,它是一个字段。这样在大多数情况下能少去书写get和set函数。

    77220

    《Java程序设计基础》 第8章手记Part 1

    调用父类中特定构造方法 即使程序中没有指明子类调用父类构造方法,运行时也会默认代用父类中没有参数构造方法。如果父类中有多个构造方法,则使用super关键字来调用特定构造方法。...C#覆盖是通过虚方法实现,具体参见之前博文《C#多态》。...Java中可以用父类对象访问子类成员,这体现了“父亲行为儿子,而不是儿子行为父亲”这种面向对象编程思想。...注意: 父类对象访问子类成员仅限于“覆盖”发生时,如果子类没有覆盖父类方法,则不能父类对象不能访问子类成员。...不可被继承成员或最终类 默认情况下所有的成员变量和方法都可以被覆盖,如果不希望被覆盖,则需加final关键字做声明。

    74250

    【《Effective C#》提炼总结】提高Unity中C#代码质量21条准则

    属性允许将数据成员作为共有接口一部分暴露出去,同时仍旧提供面向对象环境下所需封装。属性这个语言元素可以让你访问数据成员一样使用,但其底层依旧是使用方法实现。...不能方法代码块上应用Conditional特性。也不可以在有返回值方法上应用Conditional特性。但应用了Conditional特性方法可以接受任意数目的引用类型参数。...原则8 选择变量初始化而不是赋值语句 成员初始化器是保证类型中成员均被初始化最简单方法——无论调用是哪一个构造函数。初始化器将在所有构造函数执行之前执行。...● 和实例初始化一样,也可以使用初始化器语法来替代静态构造函数。若只是需要为某个静态成员分配空间,那么不妨使用初始化器语法。...1)接口中声明成员方法默认情况下并非虚方法,所以,派生类不能覆写基类中实现非虚接口成员。若要覆写的话,将接口方法声明为virtual即可。

    1.7K30

    A4第四章第2节null和成员变量、局部变量不同初始化

    6、我们定义一个【类】后,就必须实例化才能使用。【实例化】就是创建一个【对象】过程。 在C#中,我们使用new运算符关键字来创建。...A4第四章第7节属性入门 第四章第7节 1、为了避免外界给成员变量随便赋值,必须把成员变量声明为private,然后提供get/set方法,写起来、调用起来都麻烦,C#提供了“属性”这样一个语法: private...4、static 方法中无法使用this关键字,因为static独立于对象存在,不是任何人唯一。 5、static成员中只能访问static成员不能直接访问非static成员。...不能创建abstract 类实例。然而可以创建一个变量,其类型是一个抽类,并让它指向具体子类一个实例。不能有抽构造函数或抽静态方法。...然后,它可以在实现了该接口任何对像上调用接口方法。由于有抽类,它允许使用接口名作为引用变量类型。通常动态联编将生效。

    54010

    C#开发面试题_程序员面试题精选100题

    Java 技术允许使用 finalize() 方法在垃圾收集器将对象 从内存中清除出去之前做必要清理工作。这个方法是由垃圾收集器在确定这个 对象没有被引用时对这个对象调用。...答:声明方法存在而不去实现它类被叫做抽类(abstract class),它用于要创建一个体现某些基本行为类,并为该类声明方法,但不能在该类中实现该类情况。...不能创建abstract 类实例。然而可以创建一个变量,其类型是一个抽类,并让它指向具体子类一个实例。不能有抽构造函数或抽静态方法。...在接口中,所有方法都是抽。多继承性可通过实现这样接口而获得。接口中所有方法都是抽,没有一个有程序体。接口只可以定义static final成员变量。...接口实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口方法。然后,它可以在实现了该接口任何对像上调用接口方法

    1.1K30

    C# static

    本文,在大文豪static与C#static随笔基础上修改,增加了几个关键知识点 1、static 关键字简介 static是C#中经常使用关键字之一,这个关键字常用于方法、字段、属性、事件、构造函数...、类中,不能用于常量、索引器、析构函数,使用static关键字,必须知道下面几个知识点: (1)、静态方法调用与非静态方法调用方式 a、静态方法调用方式:类名.静态方法名 b、非静态方法调用方式:new...因为是.NET调用,所以public和private等修饰符就没有意义了。...造成i原因是: 在一个静态方法或者是静态构造函数中方法使用非静态成员,因为static类型是属于这个类本身,在类被调用时候,static类型就已经生成,而非static成员还没有生成,他不属于这个类本身...,而是属于这个类对象,所以在没有实例化对象之前,是找不到非静态成员,所以在静态方法或者构造函数中使用非静态成员必须这样:new 类名().非静态成员=值; j、静态构造函数是最早被调用,只要有静态访问

    87050

    ·方法

    三、Lambda表达式委托 ·匿名方法    如果方法只被调用一次,且方法体比较少,我们往往会使用匿名方法来简化程序,其优点是简洁、其缺点是难以复用。   ...以下代码编译会报错:“无法将 lambda 表达式 转换为预期委托类型,因为块中某些返回类型不可隐式转换为委托返回类型 ”,因为签名不一样。   ...只要任何支持成员(如方法或属性)逻辑包含单个表达式,就可以使用表达式主体定义。 ...·构造函数   构造函数表达式主体定义通常包含单个赋值表达式或一个方法调用,该方法调用可处理构造函数参数,也可初始化实例状态。   ...下面的示例定义了一个终结器,该终结器使用表达式主体定义来指示已调用该终结器。

    72370

    C Sharp(三)

    C Sharp(三) 發佈於 2018-10-19 这一篇,我们深入理解一下 C#类。 类成员 ---- 上篇我们说过了 2 个类成员: 字段和方法。...与实例成员一样在类外使用点运算符来访问静态成员,只不过是使用类名来访问。...属性 C#属性非常 Swift 中计算属性。他们在使用时非常字段,但是和字段不同是,他们是函数成员,可以执行代码。...调用时机是: 在引用任何静态成员之前 在创建类任何实例之前 静态构造函数特点是: 名称必须与类名相同 不能有返回值 只能有一个静态构造函数 不能有参数 不能有访问修饰符 class Class1...{ static Class1() { //执行静态成员初始化 } } 在静态构造函数不能访问实例成员,我们也不能显示调用静态构造函数。

    62620

    .Net知识大全(个人整理)

    不能创建它实例。 它使用abstract修饰符来声明。 抽象类可以包含抽象成员,但不是必须,它成员可以抽象成员和普通带实现成员任意组合。 它自己可以派生自另一个抽象类。...接口声明不包括数据成员。 接口声明只能包含如下类型静态成员函数声明:方法、属性、事件、索引。 接口成员不能包含任何实现代码,而在每一个成员声明主体后必须使用分号。 接口名称必须从大写I开始。...而字符串是一个特殊引用型类型,在C#语言中,重载了string 对象很多方法方法(包括equals()方法),使string对象用起来就像是值类型一样。...什么是抽函数? 虚函数:使它们可以在派生类中被重写,它自身可以有函数实现。 抽函数:规定其非虚子类必须实现函数,必须被重写,它自身不可有函数实现 75.什么是XML?.... 95.当类T只声明了私有实例构造函数时,则在T程序文本外部,不可以从T派生出新类,因为子类无法调用父类构造函数,不可以直接创建T任何实例。

    1.2K20

    C# 继承、多态性、抽象和接口详解:从入门到精通

    C# 继承在 C# 中,可以将字段和方法从一个类继承到另一个类。我们将“继承概念”分为两类:派生类(子类) - 从另一个类继承类基类(父类) - 被继承类要从一个类继承,使用 : 符号。...默认情况下,接口成员是抽象和公共。注意:接口可以包含属性和方法,但不能包含字段。要访问接口方法,接口必须由另一个类“实现”(有点继承)。要实现接口,请使用冒号符号(与继承一样)。...接口方法没有方法体 - 方法体由“实现”类提供。在实现接口时,必须覆盖其所有方法。接口可以包含属性和方法,但不能包含字段/变量。接口成员默认是抽象和公共。...接口不能包含构造函数(因为它不能用于创建对象)。为什么以及何时使用接口?1) 为了实现安全性 - 隐藏对象某些细节,仅显示重要细节(接口)。2) C# 不支持“多继承”(一个类只能继承一个基类)。...默认情况下,接口成员是抽象和公共。注意:接口可以包含属性和方法,但不能包含字段。要访问接口方法,接口必须由另一个类“实现”(有点继承)。要实现接口,请使用冒号符号(与继承一样)。

    40510

    C Sharp(六)

    需要注意与类赋值不同。 结构允许有实例构造函数和静态构造函数,但不允许有析构函数。 与类一样,编译器隐式为结构提供一个无参构造,这个构造将每个成员设置为该类型默认值。...与类不同是,这个无参构造函数不能被重定义,我们只能创建另外有参构造,而不能重写无参构造,并且我们提供了有参构造,编译器提供给我们无参构造依然存在。...,但有一些限制: 显式设置数据成员之后,才可以使用这些成员值 对所有的数据成员赋值之后,才能调用任何函数成员 结构字段是不允许有初始化语句。...之前说了,结构是隐式密封,因此 protected,internal,abstruct,virtual 修饰符不可使用。 与 Swift 类似,C#简单预定义类型在实现方式上是使用结构类型。...所以可以调用一些方法,如: 所有类型都有的 GetType 方法。 另外说一句: JavaScript 中简单类型如 string 也可以调用方法,他们是在使用值时被临时包装成一个对象。

    43330

    C#8.0新增特性

    这节回顾一下C# 8.0中新增特性。 Readonly成员: C#8.0中,可将readonly修饰符应用于结构成员,它指示该成员不会修改状态。...默认接口方法: C#8.0可以将成员添加到接口,并为这些成员提供实现。 借助此语言功能,API 作者可以将方法添加到以后版本接口中,而不会破坏与该接口当前实现源或二进制文件兼容性。...C#8.0中,使用using可以不再将其用括号括起来,而是一个关键字一样,在加在对象声明语句开头,请看如下代码: 当运行到最后一个大括号时就会自动释放file对象。...如果没有通过调用任何可用构造函数或通过初始化表达式来设置变量,编译器将生成警告。 此外,不能不可为空引用类型分配一个可以为 Null 值。...不过,编译器使用流分析来确保可为空引用类型任何变量在被访问或分配给不可为空引用类型之前,都会对其 Null 性进行检查。 异步流: 从 C# 8.0 开始,可以创建并以异步方式使用流。

    1.1K40

    Swift学习第一练——用Swift实现FlappyBird小游戏

    用Swift实现FlappyBird小游戏       伴随着apple公司对swift推广态度深入,swift火很快,并且swift精简便捷语法和强大功能,对于使用Object—C开发iOS...这篇博客跳过swift干涩语法,直接从一个小游戏项目开始使用swift,将其中收获总结如下:     FlappyBird是前段时间很火一款小游戏,通过手指点击屏幕平衡小鸟通过障碍。...().bounds     我们需要定义一些成员变量,如下: class ViewController: UIViewController {     var timer:NSTimer?...对于UI创建等部分函数和OC一样,只是调用方式略有不同,后面会附上源码。     ...在控制小鸟下落部分代码如下,其中有一点需要注意,在swift中没有隐士转换这个概念,比如你要使用int a + float b 你必须手动将int转为float:(Float)(a)+b func birdMove

    1K20

    c# 程序员十个重要提示

    c# 程序员十个重要提示 本文讲述我认为对 c# 程序员最重要 10 个提示, 每个提示都会有一段对应代码, 对 新手来说也很容易掌握。...1: 为非公开方法编写测试 你尝试过为组件非公开方法写测试么? 很多开发者都没有写过, 因为这些方法对测试项 目来说是不可。...c# 可以通过在 AssemblyInfo.cs 中添加下面的标记 (InternalsVisibleToAttribute) , 让内部成员对其它组件可见。...在 c# 代码中, 如果你下面的代码一样在 catch 代码块中抛出 ConnectDatabase 方法中出现异常, 异常堆栈就会只显示到 RunDataOperation 方法, 这样就会丢失...异常原始堆栈跟踪信息导致不能找到确切错误源头。

    1.1K40

    C++程序员转向C#十大陷阱

    编译器会告诉你不能直接调用基类Finalize方法,它将从析构函数中自动调用。关于原因,请参见本小节后面的例子和陷阱二有关译注!...不能直接调用基类Finalize() } } 对这个主题完整理解请参照陷阱二。】 陷阱2.Finalize 和 Dispose 显式调用终结器是非法,Finalize方法应该由垃圾收集器调用。...因为你并不能肯定客户将调用Dispose,并且终结器是不确定(你无法控制什么时候运行GC),C#提供了using语句以确保尽可能早地调用Dispose。...陷阱3.C#区分值类型和引用类型 和C++一样C#是一个强类型语言。并且象C++一样C#把类型划分为两类:语言提供固有(内建)类型和程序员定义用户定义类型【译注:即所谓UDT】。...另一方面,如果程序员想重载Window方法,只要显式加上override关键字即可。 陷阱7:不可以在头部进行初始化 C#初始化不同于C++。

    2.1K10
    领券