c#类访问从嵌套类混淆
本文关键字:嵌套 访问 | 更新日期: 2023-09-27 18:12:54
我创建了一个库类,其中…
public class CircuitLibrary
{
// Fields, properties, methods, etc.
...
// Nested classes.
public class Sensor
{
// Enums.
public enum Sensors { Sensor1, Sensor2, Sensor3, ... };
...
}
public class SerialCommands
{
// Fields, properties, etc.
...
// Nested classes.
public class SensorSettingsCommands
{
// Fields, properties, etc.
...
public void SomeMethod()
{
...
if( Sensor.Sensors.IsOn ) // Doesn't like this. OK if I change to CircuitLibrary.Sensor.Sensors.IsOn. Why?
...
}
}
}
}
下面是我收到的错误:
Cannot access a nonstatic member of outer type
"MyCircuitLibrary.CircuitLibrary.SerialCommands" via nested type
"MyCircuitLibrary.CircuitLibrary.SerialCommands.SensorSettingsCommands"
所以它看起来像是在搜索(并且找到了?)SerialCommands
中的Sensor
?但是如果我把它改成CircuitLibrary.Sensor
,它现在知道它在CircuitLibrary?当我右键单击并"转到定义"时,它会发现它是好的,并没有说"在SerialCommands
中找不到Sensor
"。如果有人能帮我解释一下这是怎么回事,我会很感激的。
谢谢!
你的SerialCommands
类有一个非静态的Sensor
属性。
因为这个属性比最外面的Sensor
类更接近你的代码,编译器认为你在使用属性而不是类。
因为在没有SerialCommands
实例的情况下不能使用非静态属性,所以会得到一个错误。
当你写CircuitLibrary.Sensor
时,它工作得很好,因为没有CircuitLibrary
属性来混淆编译器