问题描述
我收到以下错误:
属性在当前上下文中不存在".
我在 StackOverflow 上检查了导致这种情况的常见原因,但我没有犯任何一个错误.(至少我理解的那些都没有^^).我正在使用 Microsoft Visual Studio 2015
I checked on StackOverflow the usual causes of this, but I have made no one of the mistakes presented. (at least none of those I understood ^^). I am working with Microsoft Visual Studio 2015
这是我的代码:
namespace ConsoleApplication5
{
public class Voiture
{
public int Vitesse { get; set; }
public Voiture()
{
Vitesse = 5;
}
public string Marque
{
get
{
throw new System.NotImplementedException();
}
set
{
}
}
}
}
在另一个文件中
namespace ConsoleApplication5
{
public class Audi : Voiture
{
public void Deraper()
{
Console.WriteLine("Vroooouum !!");
}
this.Marque = "Audi";
}
}
如果我使用 Voiture.Marque
而不是 this.Marque
,我会遇到同样的问题.如您所见,命名空间没有问题.知道发生了什么吗?
If instead of this.Marque
I use Voiture.Marque
, I get the same problem.As you can see, the namespaces are OK. Any idea of what is going on ?
推荐答案
1) 不允许在方法主体之外访问和初始化继承的属性.您只能在那里声明新的属性或字段.
1) You are not allowed to access and initialize inherited properties outside a method body. You are only allowed to declare new properties or fields there.
2) Marque
属于 int
类型,您不能为其分配 string
2) Marque
is of type int
and you cannot assign a string
to it
3) 你的 Marque
的 setter 是空的,所以这不会有任何影响
3) your setter of Marque
is empty so this will have no effect
解决方案:
1) 将 this.Marque
的访问移到构造函数或方法体中!
1) Move the access of this.Marque
into the constructor or a method body!
2) 将 Marque
的类型更改为 string
或您分配给它的值给 int
2) change either the type of Marque
to string
or the value that you assign to it to an int
3) 添加一个额外的私有字段并按以下方式重写 setter(和 getter):
3) add an extra private field and rewrite the setter (and the getter) in the following way:
private int marque;
public int Marque
{
get
{
return marque;
}
set
{
marque = value;
}
}
有关如何使用属性的更多信息,您可以查看以下链接:
https://www.dotnetperls.com/property
如果我使用 Voiture.Marque
而不是 this.Marque
,我会遇到同样的问题.
这是因为第一个问题仍然有效.如果您在方法主体内执行此操作,则会遇到额外的问题!因为Marque
不是static
,所以你不能通过用类名调用它来使用它.您需要一个 Voiture
This is because the first problem is still valid. If you would do this inside a method body you would get an additional problem! Because Marque
is not static
, so you cannot use it by calling it with the class name. You would need an instance of an object of type Voiture
这篇关于属性在当前上下文中不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!