C#如何访问公共结构的静态字段

fif*_*lus 5 c#

我正在尝试访问我已经定义为公共的static字段struct.但是,由于其防护等级,我仍然"无法访问"任何人都可以帮助我吗?

public class Program
{
    public struct AT_CMD
    {
        static int x = 7;
       static  byte[] cmd_mode = new byte[3] { 0x2B, 0x2B, 0x2B };
       static  byte[] end_device_assoc = new byte[4] { 0x41, 0x54, 0x41, 0x31 };
      //should be 0 for end device, default is 0
       static  byte[] data_rate = new byte[4] { 0x41, 0x54, 0x42, 0x44 }; //3 for 9600, 5 for 38400
       static  byte[] channel = new byte[4] { 0x41, 0x54, 0x43, 0x48 }; //0x0B-0x1A
       static  byte[] Dest_addr_high = new byte[4] { 0x41, 0x54, 0x44, 0x48 }; //0 FOR 16bit
       static  byte[] Dest_addr_low = new byte[4] { 0x41, 0x54, 0x44, 0x4C };
       static  byte[] my_addr = new byte[4] { 0x41, 0x54, 0x4D, 0x59 }; // 0-0xFFFF
       static  byte[] carriage_return = new byte[1] { 0x0D };
   }  

    static void Main()
    {
        int y = AT_CMD.x;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*are 8

将其更改为:

  public struct AT_CMD
  {
        public static int x = 7;

        // ...
  }  
Run Code Online (Sandbox Code Playgroud)

只是做一个struct public不影响其成员,默认情况下struct将成为成员,private除非您另有指定.

更新:解决默认访问的混淆,如果在命名空间级别声明(不嵌套在另一个类/结构中),internal则是struct或者class自身的默认访问:

直接在命名空间内声明的类和结构(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的.如果未指定访问修饰符,则Internal是默认值.

然而,a中的字段classstruct始终默认为private:

默认情况下,类成员和结构成员(包括嵌套类和结构)的访问级别是私有的.

来自MSDN.


ole*_*sii 5

默认字段是private。添加仍然允许您使用结构的最大限制修饰符。

public struct AT_CMD
{
    public static int x = 7;
}  

static void Main()
{
    int y = AT_CMD.x;
}
Run Code Online (Sandbox Code Playgroud)