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

PropertySharedoesnotexistinthecurrentcontext

时间:2023-04-11 00:20:40 C#

Propertydoesnotexistinthecurrentcontext我收到以下错误:“Propertydoesnotexistinthecurrentcontext”。我检查了StackOverflow的常见原因,但没有提出任何错误。(至少我不明白这些^^)。我正在使用MicrosoftVisualStudio2015这是我的代码:namespaceConsoleApplication5{publicclassVoiture{publicintVitesse{get;放;}publicVoiture(){Vitesse=5;}publicstringMarque{get{thrownewSystem.NotImplementedException();}set{}}}}在另一个文件命名空间ConsoleApplication5{publicclassAudi:Voiture{publicvoidDeraper(){Console.WriteLine("Vroooouum!!");}this.Marque="奥迪";如果我使用Voiture.Marque而不是this.Marque,我会遇到同样的问题。如您所见,命名空间是可以的。你可知道发生了什么?1)不允许在方法体之外访问和初始化继承属性。您只能在那里声明新的属性或字段。2)Marque是int类型,不能给它赋string3)你的Marque的setter是空的,所以这没有作用解决方法:1)将this.Marque的访问权限移到构造函数或方法体中!2)将Marque的类型更改为string或将分配给它的值更改为int3)添加一个额外的私有字段并覆盖setter(和getter),如下所示:privateintmarque;publicintMarque{get{returnmarque;}设置{品牌=价值;有关如何使用属性的更多信息,您可以查看这些链接:https://www.dotnetperls.com/propertyhttps://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/using-properties编辑:如果我使用Voiture.Marque而不是this.Marque,我会遇到同样的问题。这是因为第一个问题仍然有效。如果在方法体内执行此操作,则会出现其他问题!因为Marque不是静态的,所以不能通过类名调用它来使用它。您需要一个Voiture类型的对象实例您的代码有两个问题。Marque是一个int并且您正在尝试设置一个字符串您不能在方法或构造函数之外访问该属性。改用这个,你会发现问题1publicAudi(){this.Marque="Audi";在C#中,您不能在类主体中初始化属性。您应该在构造函数中初始化它们:namespaceConsoleApplication5{publicclassAudi:Voiture{Audi(){this.Marque="Audi";}publicvoidDeraper(){Console.WriteLine("Vroooouum!!");}}}问题是您缺乏对OOP的基本了解。您正在尝试从类范围分配基类属性,这不是它在OOP中的工作方式。您必须创建一些“可调用”范围,例如。publicclassAudi:Voiture{//Draper()...publicAudi():base(){Marque="Audi";更具描述性的答案:类范围内的所有内容都称为定义,其中的每个其他范围都称为实现。现在您已经在父类中定义(定义)了字段/属性,您必须在字段/属性的访问修饰符允许您的实现中或在您同时定义此字段的字段中分配它Fields/properties.以上为C#学习教程:当前上下文没有属性共享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: