类逻辑不返回值

本文关键字:返回值 | 更新日期: 2023-09-27 17:50:57

我有一些用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;
    }

我已经去掉了工作代码,使其更容易阅读。然后,我使用实体框架来收集项目列表。

 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。我不确定我做错了什么。谢谢。

类逻辑不返回值

在您的foreach块中,您正在为正在创建的DriverTimeObject设置Parts,但您似乎从未设置DT.Parts。因此,每次调用DT.GetAmountChargedParts时,如果它找不到匹配的ComponentStatus,它将返回_Parts(对于当前实例:DT),它将始终为空。