0
我有關於由值在C#中傳遞的參數的一個問題:有一個被稱爲比較兩個複雜的對象「Umfrage」使用存儲器流功能,TeamId應該從該比較中排除:通過值傳遞的參數,仍然在函數內改變?
public static bool CompareSurveys(Umfrage obj, Umfrage obj1)
{
obj.TeamId = null;
obj1.TeamId = null;
using (MemoryStream memStream = new MemoryStream())
{
if (obj == null || obj1 == null)
{
if (obj == null && obj1 == null)
return true;
else
return false;
}
BinaryFormatter binaryFormatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
binaryFormatter.Serialize(memStream, obj);
byte[] b1 = memStream.ToArray();
memStream.SetLength(0);
binaryFormatter.Serialize(memStream, obj1);
byte[] b2 = memStream.ToArray();
if (b1.Length != b2.Length)
return false;
for (int i = 0; i < b1.Length; i++)
{
if (b1[i] != b2[i])
return false;
}
return true;
}
}
當我調用該方法並按值傳遞參數,但是,無論如何,TeamId都設置爲null。當只有價值通過時,這怎麼可能?
Survey.TeamId = "1";
Debug.WriteLine(Survey.TeamId);
if (ModelValidator.CompareSurveys(@survey, Survey))
{
return BadRequest("No changes were applied");
}
Debug.WriteLine(Survey.TeamId);
感謝提前:)
假設'Umfrage'是一個類,那麼儘管您可能會通過值傳遞參考,但它仍然是一個參考。你所做的任何修改都是針對同一個對象,你的代碼的其他部分也可能有一個引用。 –
非常感謝你,那應該是:)對不起,我沒有意識到已經有一個像我這樣的問題。 –