我試圖將結構傳遞給子/空來填充數據。在C#這工作做拳擊行爲在C#和VB中有所不同
[TestFixture]
public class Boxing
{
[Test]
public void BoxingValue()
{
var res = (object)new Test();
SomeVoid(res);
Assert.AreEqual(2, ((Test)res).Id);
}
public static void SomeVoid(object b)
{
var f = b.GetType().GetField("Id");
f.SetValue(b, 2);
}
public struct Test
{
public int Id;
}
}
此代碼通過在VB thoug在C#中測試細
<Test> Public Sub StructTest()
Dim s As Object
s = CObj(New Test)
A(s)
Assert.AreEqual(2, CType(s, Test).Id)
End Sub
Public Sub A(val As Object)
Dim f = val.GetType().GetField("Id")
f.SetValue(val, 2)
End Sub
Public Structure Test
Public Id As Integer
End Structure
有沒有人有這樣的解釋..
奇怪嗎?
我不明白。發佈完整的代碼。什麼是'res'的類型? – 2014-10-28 16:03:20
是的,沒有在C#中聲明'res',就無法確定代碼是否被正確轉換。您需要兩條缺失的行 - 「Dim s As Object」和「s = CObj(New Test)」。 – Neolisk 2014-10-28 16:04:10
我的壞..現在應該在那裏 – PEtter 2014-10-28 16:05:21