C# 4.0 Part 9 - Spell Checking with word using Optional Parameters
כמו
שהבטחתי אני רוצה להדגים שימוש ב - Optional Parameters.
הקוד הבא משתמש בבדיקת האיות של Word.
public static void Main()
{
Application word = new Application();
object missingValue = Type.Missing;
Document doc = word.Documents.Add(ref missingValue, ref missingValue,
ref missingValue, ref missingValue);
doc.Activate();
SpellingSuggestions suggestions =
word.GetSpellingSuggestions("placa",
ref missingValue, ref missingValue,
ref missingValue, ref missingValue,
ref missingValue, ref missingValue,
ref missingValue, ref missingValue,
ref missingValue, ref missingValue,
ref missingValue, ref missingValue,
ref missingValue);
foreach (SpellingSuggestion sg in suggestions)
{
Console.WriteLine(sg.Name);
}
}
כדי לא להשאיר באפלה את מי שלא מבין את הקוד הזה, אני אתן הסבר קצר.
בהתחלה אני יוצר מופע של Word Application, אני מוסיף לו מסמך (כי אני לא יכול להשתמש בבודק האיות אם אין מסמך), אבל היות שהמתודה Add מקבלת כל מיני פרמטרים (החל מתבנית ועד האם להציג את המסמך) אני שולח את הערך Type.Missing שכמשמעותו - אובייקט חסר ערך ובמילים אחרות אני אומר לפונקציה להשתמש בערך ברירת המחדל עבור הפרמטרים.
לאחר מכן אני מפעיל את המתודה GetSpellingSuggestions שמקבלת מילה לבדיקה ועוד שלוש עשרה פרמטרים שונים ומשונים (ותאמינו לי מי שנתקל פעם ראשונה בזה:
אין לו מושג מה צריך לשלוח).
בסוף אני מדפיס את ההצעות שקבלתי.
נחזור לעניין. גם המתודה Add וגם המתודה GetSpellingSuggestion הפרמטרים שלהם מוגדרים כפרמטרי רשות (אם תעשו את זה ב - VB.Net תראו) אבל היות שעד ל C# 4.0 השפה לא תמכה בפרמטרי רשות, הקוד היה נראה זוועה.
שימו לב לאותו קוד ב - C# 4.0
public static void Main()
{
Application word = new Application();
Document doc = word.Documents.Add();
doc.Activate();
SpellingSuggestions suggestions = word.GetSpellingSuggestions("placa");
foreach (SpellingSuggestion sg in suggestions)
{
Console.WriteLine(sg.Name);
}
}
מדהים איך שפיצ'ר אחד קטן גורם שהקוד שלנו נראה קריא ויפה יותר.
הנה הבקשה של GetSpellingSuggestion:
בפוסט הבא (בעזרת ה' במוצאי שבת) נכנס אל מאחורי הקלעים של Optional Parameters ונבין איך זה עובד והאם יש לזה השפעה על הביצועים, ועוד.