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'是一个类,那么尽管您可能会通过值传递参考,但它仍然是一个参考。你所做的任何修改都是针对同一个对象,你的代码的其他部分也可能有一个引用。 –
非常感谢你,那应该是:)对不起,我没有意识到已经有一个像我这样的问题。 –