Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过值传递的参数,在函数中仍然更改?_C#_Function_Parameters - Fatal编程技术网

C# 通过值传递的参数,在函数中仍然更改?

C# 通过值传递的参数,在函数中仍然更改?,c#,function,parameters,C#,Function,Parameters,关于C#中通过值传递的参数,我有一个问题:有一个函数被调用以使用内存流比较两个复杂对象“Umfrage”,TeamId应排除在该比较之外: public static bool CompareSurveys(Umfrage obj, Umfrage obj1) { obj.TeamId = null; obj1.TeamId = null; using (MemoryStream memStream = new MemoryStream(

关于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;
        }
    }

提前感谢:)

函数参数是两个对象

如果在此函数中更改某些对象属性,这些属性将在函数外部更改

但如果在你的功能中
obj=new Umfrage()
和will change properties所有属性都不会在外部更改。

假设
Umfrage
是一个类,那么尽管您可以按值传递引用,但它仍然是一个引用。您所做的任何更改都将指向同一个对象,您代码的其他区域可能也有引用。非常感谢,应该是这样:)对不起,我没有意识到已经有一个像我这样的问题了。
Survey.TeamId = "1";
Debug.WriteLine(Survey.TeamId);
if (ModelValidator.CompareSurveys(@survey, Survey))
{
    return BadRequest("No changes were applied");
}
Debug.WriteLine(Survey.TeamId);