שאלה בקשר למערכים...

מקסס

New member
שאלה בקשר למערכים...

האם ב-C# יש אפשרות לפנות לאינדקס המערך בשם, כמו שניתן ב-php או שהאינדקסים הם בעלי ערך מספרי בלבד? תודה :)
 

yuval k

New member
System.Collections.Hashtable

אתה בעצם מדבר על Hashtable
עיין כאן.
 

nattygur

New member
רק ששימוש ב HashTable

מתאים יותר לאוביקטים ולא ל Valuetypes. בקיצור אם תאכסן ValueTypes ב HashTable תגרום להרבה Boxing / unboxing.
 

אבי דקל

New member
המממ....

אני נוהג להשתמש ב Hash Table כאשר האינדקט שלי הוא סטרינג, קרי - מילים מסוימות. 1. האם גם זה נחשב Value Type ולא יעיל ? 2. איזו עוד אפשרות יש לי ? 3. ראיתי שניתן להגדיר משתנה כ string וגם כ String - מה ההבדל ?
 

nattygur

New member
1) String לא ValueType

2) תשובה 1 עונה על 2. 3) יש רק String.ב MSDN יש גם string אבל הוא מתייחס ל COM. אם תשנה את הפילטר רק ל NET. לא תראה אותו.
 

nattygur

New member
אז ...

הקומפילר הופך את זה ל String זה רק תחביר של השפה. אה הבנתי התשובה צריכה להיות אותו דבר.
 

אבי דקל

New member
מה שמוזר הוא...

שאתה לא הבנת ישר שאפשר להגדיר בתוכנית string, לכן אולי אני עושה משהו לא נכון ?
 

אבי דקל

New member
וואי, אתה אנושי ../images/Emo13.gif כלומר :

פשוט הנחתי שאתה לא טועה
שורה תחתונה, אני מגדיר בתוכנית משנה מסוג string. לא ניתן להגדיר משתנה מסוג String (ניסיתי). משתנה מסוג string הינו מסוג Referene Type ומוקצה ב Heap. סיכום מדוייק ?
 

gilad g

New member
לא ממש

String הוא לא reference type.. הוא גם לא Value Type... הוא משהו ביניהם. כשאתה מעתיק סטרינג, הוא מועתק by value.. אז הוא value type... אבל הוא בעצם לא גורר boxing/unboxing כך שהוא גם reference type..
 

nattygur

New member
String הוא Reference

type אבל אכן מקבל טיפול מיוחד מה CLR. רק מי שיורש מ ValueType הוא ValueType.
 

gilad g

New member
הוא לא ref type במלוא מובן המילה..

כשאתה מעביר אותו למתודה אחרת, לא מועבר refernce אליו, אלא המחרוזת מועתקת, כלומר by value.
 

nattygur

New member
לא בדיוק

string ו System.String אחד הם. הווה אומר string ב C# הופך להיות System.String ב IL. דרך אגב ניתן להגדיר משתנה מסוג System.String :
string strNat = "fff"; System.String strRon = "ggg";​
וכן System הוא Reference type
 

fazer

New member
ועוד בקשר למערכים ב C#

האם ניתן (ואיך) להגדיר מערך דינאמי? משום מה לא מצאתי התיחסות למערכים דינאמיים... Fazer
 

nattygur

New member
מערכים דינאמיים רק ע"י שימוש

ב System.Collection. מערך רגיל לא דינמי. גם אם VB מאפשר "מערך דינמי" כל הוספת אובייקט מייצר את המערך מחדש כמו הוספת String ל String.
 

fazer

New member
../images/Emo51.gif ועוד משהו קטנטן...

אם יש לי מערך, נגיד מסדר 2X2, האם יש לי אפשרות להפוך אותו למערך מסדר אחר, נגיד 3X3, בלי להגדיר אותו מחדש ולהעביר את הערכים באופן ידני מאחד לשני?
ו |שלום| Fazer עצלן מערכים ידוע...
 

yuval k

New member
קרא את התשובה של נתי...

מערכים רגילים אינם דינמיים, ובכדי לשנות את גודלם יש ליצור אותם מחדש.
 
למעלה