PDA

View Full Version : سوال: کلاسهای تو در تو یا Nested Class



mohammadmdp
یک شنبه 16 فروردین 1388, 10:09 صبح
کسی می تونه کمکم کنه لطفا؟

مشکل این چیه؟

کد :


public class Chain_names
{
public string name;
public int Mols_no;
public class Mol_cl
{
public string name;
public int Atoms_no;
public class Atom_cl
{
public string name, X, Y, Z, XY, YZ;
}
public Atom_cl[] Atomm_cl = new Atom_cl[100];
}
public Mol_cl[] Moll_cl = new Mol_cl[100];
}
public Chain_names[] chainName = new Chain_names[1000];




پیغام خطا:

Object reference not set to an instance of an object.


می خوام اینطوری مقدار بدم:

chainName[0].name = "2RDF";
chainName[0].Mols_no = 200;
chainName[0].Moll_cl[0].name = "ALU";
chainName[0].Moll_cl[0].Atoms_no = 2000;
chainName[0].Moll_cl[0].Atomm_cl[0].name = "T";
chainName[0].Moll_cl[0].Atomm_cl[0].X= "1.02";
chainName[0].Moll_cl[0].Atomm_cl[0].Y = "1.25";
chainName[0].Moll_cl[0].Atomm_cl[0].Z = "2.00";
chainName[0].Moll_cl[0].Atomm_cl[0].XY = "0.75";
chainName[0].Moll_cl[0].Atomm_cl[0].YZ = "1.12";

اما نمی ذاره.:متفکر::ناراحت:

ASKaffash
یک شنبه 16 فروردین 1388, 11:36 صبح
سلام
اینطوری اصلاح شود :


public class Chain_names
{
public Chain_names()
{
}
public class Mol_cl
{
public string name;
public int Atoms_no;
public Atom_cl[] Atomm_cl = new Atom_cl[100];
public class Atom_cl
{
public string name, X, Y, Z, XY, YZ;
}
}
public string name;
public int Mols_no;
public Mol_cl[] Moll_cl = new Mol_cl[100];
}
public Chain_names[] chainName = new Chain_names[1000];
private void button1_Click(object sender, EventArgs e)
{
chainName[0] = new Chain_names();
chainName[0].name = "2RDF";
chainName[0].Mols_no = 200;
chainName[0].Moll_cl[0] = new Chain_names.Mol_cl();
chainName[0].Moll_cl[0].name = "ALU";
chainName[0].Moll_cl[0].Atoms_no = 2000;
chainName[0].Moll_cl[0].Atomm_cl[0] = new Chain_names.Mol_cl.Atom_cl();
chainName[0].Moll_cl[0].Atomm_cl[0].name = "T";
chainName[0].Moll_cl[0].Atomm_cl[0].X = "1.02";
chainName[0].Moll_cl[0].Atomm_cl[0].Y = "1.25";
chainName[0].Moll_cl[0].Atomm_cl[0].Z = "2.00";
chainName[0].Moll_cl[0].Atomm_cl[0].XY = "0.75";
chainName[0].Moll_cl[0].Atomm_cl[0].YZ = "1.12";
}

mohammadmdp
سه شنبه 18 فروردین 1388, 00:33 صبح
از راهنماییت ممنونم.

اما تو این کدی که نوشتی فقط تو خونه صفر از هر آرایه میشه مقدار داد. تو خونه های بعدی چی؟

برای هر خونه این کدها رو بنویسیم؟ نمیشه که.

chainName[0] = newChain_names();
chainName[0].Moll_cl[0] = newChain_names.Mol_cl();
chainName[0].Moll_cl[0].Atomm_cl[0] = newChain_names.Mol_cl.Atom_cl();

mohammadmdp
جمعه 21 فروردین 1388, 02:33 صبح
یعنی هیچ کس نیست بتونه به من کمک کنه؟ :ناراحت:

linux
جمعه 21 فروردین 1388, 06:03 صبح
یعنی هیچ کس نیست بتونه به من کمک کنه؟ :ناراحت:
البته خیلی واضح هست که نتوتی دیتا در این آرایه بریزی.
باید برای هر عنصر آرایه یک نمونه از کلاس بسازی


for (int i = 0; i < 10; i++)
{
Chain_names c = new Chain_names();
c.name = "rr";
c.Mols_no = i;

chainName[i] = c;
}

بعدش این کلاسهای تو هم شما چه کار می خواهد برای شما انجام بدهد ، شما این 3 کلاس را جد از هم هم می نوشتی همینن چیزی که می خواستی میشد.
برای پر کردن این آرایه شما 2 تا آرایه تو در توی دیگر هم نیاز دارید.

mohammadmdp
شنبه 22 فروردین 1388, 02:00 صبح
البته خیلی واضح هست که نتوتی دیتا در این آرایه بریزی.
باید برای هر عنصر آرایه یک نمونه از کلاس بسازی


for (int i = 0; i < 10; i++)
{
Chain_names c = newChain_names();
c.name = "rr";
c.Mols_no = i;

chainName[i] = c;
}
بعدش این کلاسهای تو هم شما چه کار می خواهد برای شما انجام بدهد ، شما این 3 کلاس را جد از هم هم می نوشتی همینن چیزی که می خواستی میشد.
برای پر کردن این آرایه شما 2 تا آرایه تو در توی دیگر هم نیاز دارید.




از راهنماییت ممنون. اما این کد مشکل منو حل نمیکنه.

من اصلا نمی فهمم.

شرح کلاسی که من می خوام اینه:

یه پروتئین یه اسم داره و چند تا زنجیره یا ( Chain ) که با این کاری نداریم.

اینو می خوایم از این کلاس

هر زنجیره اسمش چیه و چند تا مولکول داره و اسمهای مولکولها چیه.

بعد خود همین مولکول ها که هر کدوم یه اسم دارند چند تا اتم دارند و هر اتم هم یه اسم داره.

دوباره هر کدوم از این اتمها یه اسم دارند و چند متغیر برای تعیین موقعیت در فضا.

درست به همین ترتیب:


chainName[0].name = "A"; // اسم اولین زنجیره
chainName[0].Mols_no = 200; // تعداد مولکولهای اولین زنجیره
chainName[0].Moll_cl[0].name = "ALU"; // اسم اولین مولکول اولین زنجیره
chainName[0].Moll_cl[0].Atoms_no = 2000; // تعداد اتمهای اولین مولکول اولین زنجیره
chainName[0].Moll_cl[0].Atomm_cl[0].name = "T"; // اسم اولین اتم اولین مولکول اولین زنجیره
chainName[0].Moll_cl[0].Atomm_cl[0].X = "1.02"; // اولین اتم اولین مولکول اولین زنجیره X موقعیت
chainName[0].Moll_cl[0].Atomm_cl[0].Y = "1.25"; // ...
chainName[0].Moll_cl[0].Atomm_cl[0].Z = "2.00"; // ...
chainName[0].Moll_cl[0].Atomm_cl[0].XY = "0.75"; // ...
chainName[0].Moll_cl[0].Atomm_cl[0].YZ = "1.12"; // ...

mohammadmdp
چهارشنبه 26 فروردین 1388, 03:32 صبح
یکی کمک لطفا :ناراحت: