我的交换功能不起作用

时间:2011-05-22 09:50:42

标签: c#

我想清楚地讨论我的问题 我有一个函数来交换两个变量的值

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

我在我的代码中使用它:

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

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

2 个答案:

答案 0 :(得分:4)

交换工作正常:

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

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

  • 混淆哪些字段/属性/变量TarikheShorooeGharardad和TarikhePayaneGozaresh在每个点引用(点击“显示定义”以确保它们是相同的)
  • 在字段/属性的情况下,混淆与
  • 相关的对象
  • 任何涉及可变结构的东西(即具有可在创建后改变的值的结构)......可变结构是邪恶的并且总是会引起混淆,例如似乎意外蒸发的变化
    • 或加倍,如果它有明确的布局(不太可能,但如果被滥用则更加邪恶)

答案 1 :(得分:1)

您到底在哪里进行验证?

我注意到在CalculateMablagheDariaftieKol()内你用一个非ref参数交换一个ref。

所以在CalculateMablagheDariaftieKol()之外,您将看不到(完整)交换。