我正在阅读文件,并且逐行提供信息(我无法更改)。我想创建一个对象,如果该行具有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
{
}
}
答案 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)
{
}