我的交换函数Don';t工作

本文关键字:工作 交换 函数 Don 我的 | 更新日期: 2023-09-27 17:57:34

我想清楚地讨论我的问题
我有一个交换两个变量值的功能

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

我在我的代码中使用它如下:

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

我已经检查了很多次了,现在我很困惑。正如你所看到的,价值没有改变!
更新:我已经编写了更多的代码。

我的交换函数Don';t工作

交换工作正常:

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

我只能得出结论,问题是你向我们展示的代码之外的东西,例如:

  • 混淆TarikheShoroeGharardad和TarikhePayaneGozaresh在每一点上引用的字段/属性/变量(点击"显示定义"以确保它们相同)
  • 在字段/属性的情况下,混淆它们与哪些对象相关
  • 任何涉及可变结构的东西(即具有在创建后可以更改的值的结构)。。。可变结构是邪恶的,总是会引起混乱,比如看似意外蒸发的变化
    • 如果它有明确的布局,情况会更糟(不太可能,但如果被滥用,会更糟糕)

您究竟在哪里进行验证?

我注意到在CalculateMablagheDariaftieKol()中,您使用非ref参数交换ref。

因此,在CalculateMablagheDariaftieKol()之外,您将不会看到(完整的)交换。