开发者

My Swap Function Don't Work

开发者 https://www.devze.com 2023-03-07 08:27 出处:网络
I want to d开发者_Python百科iscuss my problem clearly. I have a function to Swap value of two variable

I want to d开发者_Python百科iscuss my problem clearly.

I have a function to Swap value of two variable

    public static void Swap<T>(ref T first, ref T second)
    {
        T temp = first;
        first = second;
        second = temp;
    }

I have use it in my code as this:

        Swap<DateTime>(ref TarikhePayaneGozaresh, ref TarikheShorooeGhozaresh);

I have checked it many times and now I am confused. As you can see the value didn't swaped!

Update : I have write more of my code.


The swap works fine:

var TarikhePayaneGozaresh = DateTime.Parse("9/9/2010 12:00:00 AM");
var TarikheShorooeGharardad = DateTime.Parse("9/9/1991 12:00:00 AM");
Swap<DateTime>(ref TarikhePayaneGozaresh, ref TarikheShorooeGharardad);
Console.WriteLine(TarikhePayaneGozaresh); // 09/09/1991 00:00:00
Console.WriteLine(TarikheShorooeGharardad); //09/09/2010 00:00:00

I can only conclude that the problem is something outside of the code you have shown us, for example:

  • confusing which fields/properties/variables TarikheShorooeGharardad and TarikhePayaneGozaresh refer to at each point (hit "show definition" to ensure they are the same)
  • in the case of fields/properties, confusing which objects they relate to
  • anything involving mutable structs (i.e. structs with values that can change after creation)... mutable structs are evil and will always cause confusion such as changes which seem to evaporate unexpectedly
    • or doubly so if it has explicit layout (unlikely, but even more evil if abused)


Where exactly do you do the verification?

I notice that inside CalculateMablagheDariaftieKol() you Swap a ref with a non-ref parameter.

So outside CalculateMablagheDariaftieKol() you will not see a (complete) Swap.

0

精彩评论

暂无评论...
验证码 换一张
取 消