c#返回函数中创建的对象

c#返回函数中创建的对象,c#,C#,我有一个函数如下 public StartEnd ConvertStartEnd(StartEnd pse, Item pi) { if (DaysBefore == pi.DaysBefore && DaysAfter == pi.DaysAfter) { return pse; } StartEnd ise = new StartEnd(); if (pse

我有一个函数如下

    public StartEnd ConvertStartEnd(StartEnd pse, Item pi)
    {
        if (DaysBefore == pi.DaysBefore && DaysAfter == pi.DaysAfter)
        {
            return pse;
        }
        StartEnd ise = new StartEnd();
        if (pse.Start <= DaysBefore)
        {
            int var1 = DaysBefore - pse.Start;
            int var2 = pi.DaysBefore - var1;
            if (var2 < 0)
            {
                ise.Start = -1;
            }
            else
            {
                ise.Start = var2;
            }
        }
        else if (pse.Start > DaysBefore)
        {
            int var1 = pse.Start - DaysBefore;
            if (var1 > DaysAfter)
            {
                ise.Start = -1;
            }
            else
            {
                ise.Start = pi.DaysBefore + var1;
            }
        }

        if (pse.End <= DaysBefore)
        {
            int var1 = DaysBefore - pse.End;
            int var2 = pi.DaysBefore - var1;
            if (var2 < 0)
            {
                ise.End = -1;
            }
            else
            {
                ise.End = var2;
            }
        }
        else if (pse.End > DaysBefore)
        {
            int var1 = pse.End - DaysBefore;
            if (var1 > DaysAfter)
            {
                ise.End = -1;
            }
            else
            {
                ise.End = pi.DaysBefore + var1;
            }
        }
        return ise;
    }
公共StartEnd转换器StartEnd(StartEnd pse,项目pi)
{
if(DaysBefore==pi.DaysBefore&&DaysAfter==pi.DaysAfter)
{
返回pse;
}
StartEnd ise=新的StartEnd();
如果(pse.开始日之前)
{
int var1=pse.Start-DaysBefore;
如果(var1>DaysAfter)
{
ise.Start=-1;
}
其他的
{
ise.Start=pi.DaysBefore+var1;
}
}
如果(pse.结束日之前)
{
int var1=pse.End-日前;
如果(var1>DaysAfter)
{
ise.End=-1;
}
其他的
{
ise.End=pi.DaysBefore+var1;
}
}
返回ise;
}
它本质上是在函数中创建一个对象并返回它


当我说,
var insSe=ConvertStartEnd(portSe,entry.Value),我没有得到返回值。我已经调试了该函数,并且
return
语句所在的行中存在一个对象。但是当我返回到调用函数时,什么都没有。出了什么问题?

尝试使用即时窗口打印变量(只需执行
.ToString()
)。这可能只是VS工具提示的问题


正如Jon Skeet在评论中所说的,你总是会得到一些东西,要么是一个值,要么是一个
null
。变量不可能处于未定义状态而没有任何值,或者
null

您肯定会得到一个返回值,除非该方法没有完成。它可能是一个
null
值,但我们需要更多地了解所涉及的其他类才能说出方法。请给我们更多的关于发生了什么的信息。如果你能提供一个简短但完整的例子来说明这个问题,那将非常有帮助。我已经检查了return语句中的值……它们是有效的……但是一旦它实际返回,我就什么也得不到了。这与范围有关吗?什么是“无”?(Oops.意思是发布到)变量的调试信息可能被弄乱了;你试过输出它/测试它/等等吗?@Aks:不,它肯定会被赋值-但值可能是空的。它在调试器的局部变量窗口中显示什么?它采取了哪条途径的方法?StartEnd是一个类还是一个结构?我们需要更多的信息。。。正如我之前所说的,理想情况下是一个简短但完整的程序来演示这个问题。