我正在尝试访问已定义为公开的static
struct
字段。
但是,由于其保护等级,我仍然无法访问#34;任何人都可以帮助我吗?
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;
}
}
答案 0 :(得分:8)
将其更改为:
public struct AT_CMD
{
public static int x = 7;
// ...
}
只是制作struct
public
不会影响其成员,默认情况下struct
的成员将为private
,除非您另有指定。
更新:解决对默认访问的混淆,internal
是struct
或class
本身的默认访问权限,如果在命名空间级别声明(不是嵌套在另一个类/结构中):
直接在命名空间内声明的类和结构(in 换句话说,没有嵌套在其他类或结构中)可以 是公共的还是内部的。如果没有访问权限,则内部是默认值 修饰符已指定。
然而,class
或struct
中的字段始终默认为private
:
类成员和结构成员的访问级别,包括 嵌套类和结构,默认是私有的。
来自MSDN。
答案 1 :(得分:4)
结构是公共的,但成员不是。
答案 2 :(得分:4)
默认字段为私有。添加仍然允许您使用结构的最大限制修饰符。
public struct AT_CMD
{
public static int x = 7;
}
static void Main()
{
int y = AT_CMD.x;
}
答案 3 :(得分:2)
声明他们是这样的:
public static byte[] cmd_mode = new byte[3] { 0x2B, 0x2B, 0x2B };
然而,看起来你的意思是这些常量。在这种情况下,他们应该真的这样声明:
public static readonly IEnumerable<byte> cmd_mod = new byte[3] { 0x2B, 0x2B, 0x2B };