c#在if语句中分配对象值

时间:2012-12-03 23:44:48

标签: c# class object if-statement

我正在阅读文件,并且逐行提供信息(我无法更改)。我想创建一个对象,如果该行具有x值,并且该行具有y值,则为该对象指定一些值。这被证明是非常具有挑战性的。显然我做错了。

if (line_split[i].Contains("LabelId"))
{
   try
   {
       gen.m_LabelId_pos.Add(multicast_ports[3], i);
       multicast my_multicast = new multicast();
   }
   catch
   {
   }
}
else if (line_split[i].Contains("TotalFrameSentCount_PerSecond"))
{
    try
    {                                    
        gen.m_TotalFrameSentCount_PerSecond_pos.Add(multicast_ports[3], i);
        // want to assign y value to the object here. but cant
    }
    catch
    {
    }
}

1 个答案:

答案 0 :(得分:3)

您可以在if语句之外声明对象,在if块中对其进行实例化,并在检查到else块之后将其设置为null块中的值{1}}。像这样:

multicast my_multicast = null;
if (line_split[i].Contains("LabelId"))
{
   try
   {
       gen.m_LabelId_pos.Add(multicast_ports[3], i);
       my_multicast = new multicast();
   }
   catch
   {
   }
}
else if (line_split[i].Contains("TotalFrameSentCount_PerSecond"))
{
    try
    {                                    
        gen.m_TotalFrameSentCount_PerSecond_pos.Add(multicast_ports[3], i);
        if(my_multicast!=null)
        {
            //do something with my_multicast here
        }
    }
    catch
    {
    }
}

顺便说一句,你应该避免吃掉你的Exceptions,如果出现问题,它们就是为了帮助你,这种方法会阻止它们隐藏它们,你就不会知道出了什么问题。使用

catch(Exception err)
{
}