我有一个像这样的程序代码
namespace Ask{
public class TestSerialize
{
[Serializable]
public struct position
{
public int x;
public int y;
}
};
public class SubTest:Panel
{
public TestSerialize.position pos;
}
public class Test
{
public static void main(String args[])
{
SubTest t=new SubTest();
Console.WriteLine(t.pos.x);
}
}
}
现在在课堂测试中访问pos.x会显示警告
警告在'Ask.SubTest.pos'上访问成员可能会导致运行时异常,因为它是按引用编组的类的字段
我对序列化概念很弱 请建议如何缓解此警告?有解决方法还是我需要重新设计? 我不想在这里发现异常。无论如何要避免它?
答案 0 :(得分:0)
您必须将struct的x和y更改为public。
[Serializable]
public struct position
{
public int x;
public int y;
}
答案 1 :(得分:0)
我认为struct成员的问题会使它们公开。请参阅我的以下程序完整的代码副本。只有struct成员是公共的,并且编译正常而没有任何警告。
public class Program
{
public static void Main(string[] args)
{
SubTest t = new SubTest();
Console.WriteLine(t.pos.x);
}
}
public class TestSerialize
{
[Serializable]
public struct position
{
public int x;
public int y;
}
};
public class SubTest
{
public TestSerialize.position pos;
}