C# 结构C中的托管指针#

C# 结构C中的托管指针#,c#,pointers,structure,managed,C#,Pointers,Structure,Managed,我正在尝试编写一个通用函数,它应该能够解析xml文件 这是密码 public struct XmlArg { public string Name; public Type T; public object Value; }; static bool ParseXmlArgs(XmlReader xml, params XmlArg[] args) { for (int i = 0; i &

我正在尝试编写一个通用函数,它应该能够解析xml文件

这是密码

    public struct XmlArg
    {
        public string Name;
        public Type T;
        public object Value;
    };

    static bool ParseXmlArgs(XmlReader xml, params XmlArg[] args)
    {
        for (int i = 0; i < args.Length; ++i)
        {
            if (xml.MoveToContent() != XmlNodeType.Element || xml.Name != args[i].Name)
            {
                return false;
            }
            args[i].Value = xml.ReadElementContentAs(args[i].T, null);
        }
        return true;
    }

    static void Main(string[] args)
    {
        int a = 0;

        ParseXmlArgs(
            XmlTextReader.Create("C:\\Users\\Yazilim\\Desktop\\XML.xml"),
            new XmlArg[]{
                new XmlArg() { Name = "ErrorCode", T = typeof(int), Value = a}});
    }
public结构XmlArg
{
公共字符串名称;
公共类型T;
公共客体价值;
};
静态bool-ParseXmlArgs(XmlReader-xml,参数XmlArg[]args)
{
对于(int i=0;i
我知道我应该将a的指针传递给值(它的类型当然应该是除object之外的其他类型)

但我不希望它是非管理的方式

在结构中使用变量的指针有什么管理方法吗


(函数可能是错误的或不正确的,它不是点)

假设您希望
XmlArg.Value
指向
a
,而不是仅仅克隆它的值,那么答案就是“您不能”。C#中没有运算符的地址,这是有充分理由的,因为您可以在堆栈上创建对变量的引用(如a)。当您超出范围时,该变量包含垃圾,然后是ZONK

检查这一个:

也可以从结构方面的微软文档中看到:Struts还可以包含构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型,但是如果需要几个这样的成员,则应该考虑将类型设为类。


希望有帮助

我不明白为什么需要指针,C#中的所有内容都已经是引用类型了。请更好地解释您试图实现的目标以及问题所在。因此我应该使用不安全上下文?这是可能的,但我确实不会这样做,因为它完全破坏了.NET运行时的安全性。目前我想不出一个简单的办法来解决你的问题:-(我建议您重新考虑这个问题。这里有一些解决此限制的提示。例如,如果您的
a
不是一个值而是一个引用类型,那么您的代码就可以正常工作。谢谢,您提供的链接正是我要找的,但不幸的是,没有简单的答案:(