[英]Managed Pointer in a Structure C#
我正在嘗試編寫一個應該能夠解析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}});
}
我知道我應該將a的指針傳遞給Value(它的類型應該是不同於object的其他類型)
但我不希望它成為非托管方式。
有沒有在結構中使用變量指針的托管方式?
(該功能可能是錯誤的或不正確的,這不是重點)
假設您希望XmlArg.Value
指向 a
而不是僅克隆其值,那么答案就是“您不能”。 C#中沒有地址運算符,這是有充分理由的,因為您可以在堆棧上創建對變量的引用(就像您的a is一樣)。 當超出范圍時,該變量包含垃圾,然后包含ZONK。
請檢查以下內容: C#中的結構指針初始化 。
同樣,從Microsoft文檔中獲取有關struct的信息:結構還可以包含構造函數,常量,字段,方法,屬性,索引器,運算符,事件和嵌套類型,盡管如果需要多個此類成員,則應考慮將您的類型設為類。
希望有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.