わかりました。C#が値型と参照型をどのように処理するかに関連していると私が信じている本当に厄介な問題がありますが、バグが正確に何であるかはわかりません。
public partial class LogicSimulationViewerForm : Form
{
private Dictionary<string, PointStruct> pointValues;
private void SearchPoint(string code)
{
ReadDefaultPointValuesResponse result = ddcdao.ReadDefaultPoint(points);
pointValues = new Dictionary<string, PointStruct>();
for (int j = 0; j < result.pointidentifier.Length; j++)
{
if (!pointValues.ContainsKey(result.pointidentifier[j]))
{
PointStruct ps = new PointStruct();
ps.name = "Random String";
ps.pointidentifier = result.pointidentifier[j];
ps.outofservice = result.outofservice[j];
pointValues.Add(result.pointidentifier[j], ps);
...
pointValuesは、クラスのプライベートフィールドとして格納されます。同じクラスですが、関数が異なります。次のことを実行しようとすると、次のようになります。
PointStruct ps = pointValues[s];
MessageBox.Show(ps.name);
MessageBox.Show(ps.pointidentifier);
MessageBox.Show(ps.outofservice);
ps.pointidentifierとps.outofserviceは正しく表示されますが、ps.nameは、私が何をしても常にnullとして返されます。この問題を解決するにはどうすればよいですか?
編集:リクエストに応じて、問題をさらに説明するためにコードを追加しています:
public struct PointStruct
{
public string pointidentifier;
public string affect;
public string outofservice;
public string priorityarray;
public string pointtype;
public string alarmstate;
public string correctvalue;
public string presentvalue;
public string name;
public string test;
}