-2

私はファイルを読んでいて、情報は行ごとに提供されています(これは変更できません)。行に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
    {
    }
}
4

1 に答える 1

3

ステートメントの外部でオブジェクトを宣言し、ブロックif内でインスタンス化し、そうでないことを確認した後if、ブロック内にその値を設定できます。このようなもの:elsenull

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)
{
}
于 2012-12-03T23:51:49.110 に答える