私はC#が初めてなので、ご容赦ください。クラスと構造体のどちらが必要かを判断できない c# の問題があります。クラスまたは構造体のリストを作成し、それに要素を追加しています。構造体を使用すると、アイテムを追加して変更し、再度追加することができます。値によって渡されるため、変更が表示されます。問題は、構造体が可変ではないため、後で要素を編集できないことです。クラスを使用する場合、項目を追加して変更すると、リスト内のすべての項目が変更されます。異なるものにしたい場合は、毎回オブジェクトの新しいインスタンスを作成する必要があります。しかし、1 つのアイテムだけを変更したいオブジェクトがあるので、他のすべてのアイテムを新しいオブジェクトにコピーする必要があります。なぜ?より良い解決策はありますか?
このコードは私の問題を示しています:
namespace TestError
{
public partial class Form1 : Form
{
private List<Thing> lst;
private Thing obj;
public Form1()
{
InitializeComponent();
lst = new List<Thing>();
obj = new Thing();
obj.a = "bla";
lst.Add(obj);
//obj = new Thing();
obj.a = "thing";
lst.Add(obj);
foreach (Thing t in lst)
listBox1.Items.Add(t.a);
}
}
class Thing
{
public string a;
//problem is there are many more items here that don't change!
}
}
構造体が機能しない理由:
namespace TestError
{
public partial class Form1 : Form
{
private List<Thing> lst;
private Thing obj;
public Form1()
{
InitializeComponent();
lst = new List<Thing>();
obj = new Thing();
obj.a = "bla";
lst.Add(obj);
lst[0].a = "new"; //error. if i change it to class, it works.
obj.a = "thing";
lst.Add(obj);
foreach (Thing t in lst)
listBox1.Items.Add(t.a);
}
}
struct Thing
{
public string a;
}
}