访问 c# 中非序列化类中包含的序列化对象
本文关键字:序列化 对象 包含 访问 | 更新日期: 2023-09-27 18:36:16
我有这样的程序代码
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"上的成员可能会导致运行时异常,因为它是按引用封送的类的字段
我对序列化概念很弱,所以请建议如何缓解此警告?有解决方法还是我需要重新设计?我不想在这里遇到例外。无论如何要避免它?
您必须将结构的 x 和 y 更改为公共。
[Serializable]
public struct position
{
public int x;
public int y;
}
我认为结构成员的问题使它们公开。请参阅我下面的程序完整代码副本。只有结构成员是公共的,它可以在没有任何警告的情况下编译良好。
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;
}