מדוע StringBuider יעיל יותר

o O o

New member
מדוע StringBuider יעיל יותר

משימוש ב + של Strings ? לדעתי ה StringBuilder מחזיק משתנה Private מסוג string, וכאשר משתמשים ב Append, אז הוא גם מוסיף את זה ע"י + ...
 

asp123

New member
תראה אמרו לי כבר ש+ פחות מהיר

מסטרינג בילדר ושהוא יותר נוח לעבודה איתו אבל אני בכל זאת משתמש ב+ למה לא הבנתי איך עובדים איתו ואולי זה הזמן לשאול איך עובדים עם זה
 

o O o

New member
ככה :

Using System.Text; StringBuilder myStr = new Stringuilder("optional str constractur)"); myStr.Append("string to add"); myStr.Append("more String to add"); כמובן שיש לו גם שיטות של Replace כו'. השאלה שלי, למי שיודע בבקשה, האם זה באמת יותר יעיל, ואם כן - מדוע.
 

asp123

New member
בFAQ מצאתי את גלעד אומר ש...

כל + לוקח Instance ולכן אני חושב שלא כדי להגזים זאת אומרת שאם זה רק כמה בדף אנ י הייתי משתמש
 

yuval k

New member
ואני חושב,

שעדיף שלא להשתמש בזה, וזהו... גם אם זה "רק כמה בדף". ובמיוחד לא בלולאות (שם בד"כ משתמשים בזה הרבה) - אתה לא יכול לדעת כמה איטרציות יהיו, וכמה זיכרון יעמוד לרשותך. אגב, במקור נתי אמר את זה, כאן (סעיף 3).
 

asp123

New member
אני ../images/Emo45.gif אבל כשאמרתי כמה בדף

התכוונתי ל10 מקסימום
 

yuval k

New member
עדיין זה לא יעיל, וזה בזבוז...

אפילו 10 פעמים לכל היותר.
 

o O o

New member
אבל למה StringBuilder יותר יעיל

אבל למה StringBuilder יותר יעיל ?
 

yuval k

New member
הוא יותר יעיל מכיוון שהוא לא יוצר

instance חדש של string בכל פעם שאתה מוסיף ל-string.
 

o O o

New member
אז איך הוא מוסיף את הסטרינג ?

נראה לי הכי הגיוני שיש לו משתנה PRIVATE שמכיל את הסטרינג, וכשעושים לו APPEND, הוא מוסיף אותו בעצם ע"י + ...
 

yuval k

New member
לא...

כשאתה עושה Append, הוא מקצה עוד זיכרון לפי הדרוש, ולא יוצר סטרינג חדש שמכיל את ערך הישן בתוספת הטקסט שהוספת. למעשה, הוא לא מכיל string ממש... ראה כאן
בפסקה הראשונה יש את מה שאתה מעוניין בו, והשאר מדברים על השימוש ב-StringBuilder.
 

א נ י ה ו

New member
זה הקטע

לא תמיד מה שנראה/חושבים הוא הנכון... ההסבר שנתנו לך הוא מדוייק.
 

o O o

New member
Web.Config

הבנתי שאני יכול לאחסן שם, בין השאר - נתונים שלי. כיצד אני שומר שם את ה Connect String של בסיס הנתונים שלי, וכיצד אני קבל אותו בתוכנית ? אגב, מה אני עושה עם הסיסמא... חייב לכתוב גם אותה שם ?
 

gilad g

New member
המממ

אתה שומר את הנתונים בחלק של ה-web.config שנקרא appSettings:
<system.web> <appSettings> <add key="constr" value="bla bla bla" /> </appSettings> </system.web>​
כדי לקרוא אותו מהתוכנית:
myconstr = ConfigurationSettings.AppSettings["constr"];​
הערה: צריך לעשות using ל-System.Configuration. אתה לא חייב לכתוב את הסיסמה שם. זה הכל שיקול שלך. (כמובן שאם ה-connection string מכיל בתוכו סיסמה, אז אין לך ברירה אלא לכתוב אותה שם, ביחד עם ה-connection string). במקרה הזה הייתי ממליץ לך להצפין את הנתונים שם.
 

o O o

New member
אני אמור ליצור את החלק

הזה (appSettings) בעצמי, תחת השורש configuration ? דרך אגב - זה Csse sensitive ? ואיך אני יכול להצפין את הנתונים שב appSettings ?
 

gilad g

New member
כן

וכן, זה case sensitive. אני לא יודע בדיוק איך להצפין את הנתונים שב-web.config - אבל חפש בגוגל, אני בטוח שתמצא משהו. נ.ב. בדוגמא שלי, בטעות רשמתי שזה תחת <system.web>, אבל תיקנת אותי בצדק - זה תחת <configuration>.
 

o O o

New member
טעות על טעות ../images/Emo13.gif ../images/Emo13.gif

בטעות כתבתי שזה תחת השורש configuration
העיקר שזה נכון, תודה !
 

o O o

New member
אגב, מדוע...

ConfigurationSettings.AppSettings["constr"];​
הפונקציה GetKey מקבל אמנם מספר, ולא את שם המשתנה שלנו, אבל הפונקציה Get יכולה לקבל שם משתנה. מדוע אתה משתמש בסוגריים המרובעים, ולא ב Get ?
 
למעלה