当前位置: 首页 > 编程语言 > C#

无法访问嵌套类或基类成员分享

时间:2023-04-10 18:54:22 C#

无法访问嵌套类或基类成员我在这里写了一些奇怪的问题。除非我直接从Account.Whatever访问它,否则我无法访问Account中的任何内容。我希望能够做到:Accountaccount=newAccount();account.Name......但我不能。智能感知中什么也没有出现。如果我这样做,我只能访问:帐户。-例如,Account.AccountHolder...放;}publicstringMiddleName{get;放;}publicstringLastName{get;放;}}enumSex{Male,Female}}}我不明白发生了什么。请注意,我还尝试了所有可能的组合,但这里有些地方非常不对劲。我试过将public添加到我的Account类中。我已经尝试将public添加到我的AccountHolder类中。我试过使用publicstatic等。我以前从未遇到过这个问题。既然我改变了多少,为什么我会遇到同样的问题?Account类位于同一winforms项目内的Account.cs文件中。一个真正的问题可能是:为什么这里需要嵌套类型?嵌套类型尤其在没有其他类型可以重用父类型的类型时使用,也就是说,如果嵌套类型应该公开仅适用于父类型的属性或值。否则,最好创建独立的类型。在我看来,您可以在AccountHolder类之外使用Salutation枚举似乎是合理的,因为AccountHolder只不过是一个法律实体,可以是真人,也可以是公司。如果您的系统可以在其他地方使用Salutation,最好在其自己的文件中创建每个枚举并公开AccountHolder类的属性。问候语publicenumSalutation{Mr,Mrs,Ms,Miss,Dr,Hon}AccountHolderpublicclassAccountHolder{publicSalutationSalutation{get;放;}//...}后面大家可能也有兴趣马上知道什么是accountholder?可以是公司、个人、客户、供应商或其他什么人吗?那么也许您应该考虑定义帐户持有人的层次结构,并使其成为最通用类类型的属性。LegalEntitypublicclassLegalEntity{publicstringName{get;放;}}CompanypublicclassCompany:LegalEntity{//一些特定于公司的成员...}PersonpublicclassPerson:LegalEntity{publicSalutationSalutation{get;放;}publicstringFirstName{get;放;}publicstringMiddleName{get;放;}publicstringLastName{get{returnbase.Name;}set{base.Name=value;}}//其他一些特定于某个人的成员...}然后,你有你的帐户类public类帐户{publicLegalEntityAccountHolder{get;没有真正意识到这一点。事实证明,LegalEntity现在可以是从LegalEntity派生的任何类型。稍后,当需要另一种类型的AccountHolder时,您可以简单地从LegalEntity或LegalEntity实际上派生自的任何其他类型派生,因为LegalEntity只是Account的一个属性,而不是每个类。充分利用嵌套类型的一些示例:此外,您需要公开嵌套类型以便从类外部访问它们。这并不意味着您可以避免Parent.NestedType命名法,您不会。除此之外,我认为您的代码没有任何问题。根据定义,嵌套类型以某种方式隐藏在另一种类型中。所以当你想访问它们时,你总是需要输入包含你需要访问的类型的父名称。此外,一旦您有权访问嵌套类型,您将不得不在您的Account类中创建成员以保存对这些嵌套类型实例的引用。恕我直言,在这里使用它们没有任何好处。但是,嘿,我坚持,我不知道你的现实和你设计背后的选择。您正在尝试访问嵌套类、结构、枚举。它应该使用嵌套的类名来完成,例如Account.Name。但是如果你有classAccount{publicstructName{publicstringFirstName{get;放;}publicstringMiddleName{get;放;}publicstringLastName{get;放;}}publicNameMyName{get;set;}}然后您可以使用Account类的实例访问MyName属性。这就是语言的工作原理。您可能想在这里使用的是名称空间。任何嵌套类都必须完全限定其父类才能使用。如果使用命名空间,则该命名空间中的任何内容都可以一起使用而无需完全限定,并且可以使用Accounting在命名空间之外(在访问修饰符的范围内)使用;这个案例)。另外,你确定要使用结构吗?值类型是不可变的,因此如果您更改该结构的任何成员,您总是会创建该结构的一个全新实例(通常效率会大大降低)。以上是C#学习教程:不能访问嵌套类或基类成员共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多加关注—namespaceAccounting{classAccount{publicPersonNameName}publicSexesSex{get;放;}publicSalutationsSalutation{get;放;}}classPersonName{publicstringFirst{get;set;}publicstringMiddle{get;放;}publicstringLast{get;放;}}enumSalutations:byte{Mr,Mrs,Ms,Miss,Dr,Hon}enumSexes:byte{Male,Female}}成员已删除。如需转载请注明出处: