菜菜吃菜 2023-04-06 23:09 采纳率: 57.5%
浏览 6
已结题

向Item 添加数据返回空


using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespaceNetClient
{
    public class KG
    {
        List<Item> items = new List<Item>();
        public void Test(Item item)
        {
            //当前记录
             item = new Item() { Name = "", Point = "", State = "1" };
            
            if (item.State == "0")
                //筛选记录
                items.ForEach(item2 =>
                {
                    if (item2.ShortName == item.ShortName && item2.State == "0")
                    {
                        item2.State = "1";
                    }

                });
            //添加记录
            items.Add(item);
        }
    }

    public class Item
    {
        /// 
        /// 设备名称
        /// 
        public string Name { get; set; }



        /// 
        /// 设备名称简称,去掉最后两个字符
        /// 
        public string ShortName { get { return Name.Substring(0, Name.Length - 2); } }

        /// 
        /// 设备状态
        /// 
        public string State { get; set; }

        /// 
        /// 设备点号
        /// 
        public string Point { get; set; }
    }
}
KG kg=new KG();
kg.Test(item);  
kg.test向item 添加数据,调试是空的,哪里错了呢?
  • 写回答

3条回答 默认 最新

  • 0xjade-Follow 2023-04-06 23:22
    关注

    在您的代码中,有以下问题:

    在Test方法中,您将参数item重新实例化,这将导致您传递给方法的原始item实例未被修改。您可以删除此行代码。

    在Item类中,如果Name属性为空字符串,则ShortName属性会引发异常。您应该添加一个检查,以确保Name属性不为空字符串。

    在Test方法中,您应该在向items列表添加item之前更新其状态,以便您添加的实例具有正确的状态。

    下面是更新后的代码:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
     
    namespace NetClient
    {
        public class KG
        {
            List<Item> items = new List<Item>();
            public void Test(Item item)
            {
                if (item.State == "0")
                {
                    //筛选记录
                    items.ForEach(item2 =>
                    {
                        if (item2.ShortName == item.ShortName && item2.State == "0")
                        {
                            item2.State = "1";
                        }
                    });
                }
                
                //添加记录
                items.Add(item);
            }
        }
     
        public class Item
        {
            private string _name;
            /// 
            /// 设备名称
            /// 
            public string Name
            {
                get { return _name; }
                set
                {
                    if (string.IsNullOrEmpty(value))
                    {
                        throw new ArgumentException("Name cannot be null or empty.");
                    }
                    _name = value;
                }
            }
    
    
    
     
            /// 
            /// 设备名称简称,去掉最后两个字符
            /// 
            public string ShortName { get { return Name.Substring(0, Name.Length - 2); } }
     
            /// 
            /// 设备状态
            /// 
            public string State { get; set; }
     
            /// 
            /// 设备点号
            /// 
            public string Point { get; set; }
        }
    }
    

    您可以使用以下代码测试:

    Item item = new Item() { Name = "TestItem", Point = "", State = "0" };
    KG kg = new KG();
    kg.Test(item);
    
    

    请注意,我将Name属性的值设置为“TestItem”,这样在ShortName属性中使用Substring方法时,不会引发异常。您应该将Name属性设置为您实际使用的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月6日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法