类逻辑不返回值

时间:2015-05-27 16:15:02

标签: c# class visual-studio-2012

我有一些用C#编写的代码。我的课程如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DrivetimeFileDump
{
public class DriveTimeObject
{

    public decimal? _Parts;

    public decimal? Parts
    {           
        get { return _Parts; }
        set
        {
            if (value != null)
            {
                _Parts = value;
            }
            else
            {
                _Parts = 0.00M;
            }
        }       
    }

    public decimal? GetAmountChargedParts(string ComponentStatus) 
    {
        string[] ComponentStatuses = new string[] { "i", "n", "d", "w", "e", "v" };
        foreach (var item in ComponentStatuses) 
        {
            if (item == ComponentStatus)
            {
                return 0;
            }
            else
            {

            }
        }
        return _Parts;
    }

我已经取出了工作代码,以便于阅读。然后,我使用Entity Framework来收集项目列表。

 DriveTimeObject DT = new DriveTimeObject();
 DateTime today = DateTime.Now;

 DataQuery = (from z in dd.viewDriveTimeFileDump_V2 where z.dtmReported <= today select z).ToList();

我循环遍历每个项目,然后调用方法为下面的部分提供值。

 foreach (var item in DataQuery) 
        {
            decimal? AmountChargedParts = DT.GetAmountChargedParts(item.chrComponSts);


            DataFile.Add( new DriveTimeObject
            {

            Parts = AmountChargedParts,

            });

        }

一切似乎都在流动,但是当设置值时,当我需要将其设置为0.00时,它将被设置为null。我不确定我做错了什么。感谢。

1 个答案:

答案 0 :(得分:1)

foreach区块中,您正在为正在创建的Parts设置DriverTimeObject,但您似乎永远不会设置DT.Parts。因此,每次调用DT.GetAmountChargedParts时,它都找不到匹配的ComponentStatus,它将返回_Parts(对于当前实例:DT),它将始终为null。< / p>