תמונה ראשית עבור 'מה חדש ב- C# 6?' מה חדש ב- C# 6?

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

לאחרונה מייקרוסופט שחררו את Visual Studio 2015, ויחד איתו גם את C# 6. הפוסט היום יעסוק בפיצ'רים החדשים שנעשו בשפה:

1. Conditional Access Operator

החידוש הראשון נקרא Conditional Access Operator (או "אופרטור גישה מותנת"), הסימון שלו הוא ?. ובסיטואציות מסויימות הוא עלול להקל המון על החיים שלכם.

if (University != null){ if (University.Students != null) { int numberOfStudents = University.Students.Count; }})

 

יהפוך ל:

int? numberOfStudents = University?.Students?.Count;

 

האופרטור יחזיר null אם אחד מהאובייקטים בשרשרת הוא null, מה שיכול להיות מאוד שימושי בשרשראות ארוכות.

 


 

2. Auto Property Initializer

זוכרים Auto Properties? אותם Properties שמגדירים עם get ו- set אוטומטיים, מבלי לממש את הגוף שלהם? אז עכשיו גם אפשר לתת להם ערך.

בC# 6 ניתן לעשות השמה לProperty, מה שבסך הכל חוסך להגדיר אותו ב- Constructor.

פעם:

class Person { public string Name { get; set; } public Person  { Name = "Eliran"; } }

 

בC# 6:

class Person { public string Name { get; set; } = "Eliran";}

 

מצריך קצת זמן הסתגלות, אבל בסך הכל יכול לחסוך Constructor מיותר או שניים.

3. שיטה שונה לכתוב Constructor

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

פעם:

class Person { public string Name { get; set; } public Person(string name) { this.Name = name; }}

 

בC# 6:

class Person(string name) { public string Name { get; set; } = name;}

 

אני יודע, אני יודע... מחלקה שמקבלת פרמטרים... זה בהחלט מוזר. אבל היי, מי אנחנו שנתווכח עם המעצבים של מייקרוסופט?

4. חידוש מסעיר ב- Out Parameter

אני משער שרוב מי שכותב בC# יותר מיום יומיים נתקל במטודה TryParse - ולמי שבכל זאת לא: מדובר במטודה שנמצאת בכמה מהמחלקות של C#, ומטרתה לנסות ולהפוך string לאובייקט מסויים. לדוגמא, המטודה TryParse ב- int מנסה להפוך string ל... int. המטודה מקבלת 2 פרמטרים: את ה- string שאנחנו רוצים להמיר, ו- out argument שאליו היא תכניס את התוצאה, כשהסיבה ל- out היא שהפונקציה מחזירה bool שמטרתו לייצג האם הניסיון צלח או כשל.

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

אני אתחיל בדוגמא, פעם היינו רושמים:

int value = 0;if (int.TryParse("5", out value) && value > 4) { Console.WriteLine("value is greater than 4");}

בC# 6 ניתן לרשום:

if (int.TryParse("5", out int value) && value > 4) { Console.WriteLine("value is greater than 4");}

החידוש מאפשר להגדיר משתני out ברמת הקריאה לפונקציה, וחוסך את השורה המיותרת. זה אומנם לא נשמע משמעותי, אבל זה משפר פלאים את הקריאות של הקוד.

5. Exception Filters

החידוש הבא מאפשר לסנן את ה- Exceptions שאנחנו רוצים לתפוס, על מנת שלא נתפוס סתם Exceptions ובכך נמנע מהם לחלחל.

זה נראה כך:

try { throw new Exception("Eliran");}catch (Exception e) when (e.Message == "Eliran") { Console.WriteLine("Caught Eliran");}

המילה השמורה when מאפשרת לתפוס Exceptions רק כאשר התנאי שבתוכה מתקיים.

6. שימוש ב- using על מחלקה סטטית

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

הדוגמא הבאה תסביר את עצמה:

using static System.Console;public class Program{ public static void Main() { WriteLine("Hello World"); }}

 

קצת לא ברור לטעמי, אבל מי אני שאשפוט.

7. String Interpolation

מי שמכיר קצת PHP מכיר את האפשרות לרשום משתנים בתוך string, כאשר הם מוקפים ב- { }. ב- C# 6 שאבו את האפרשות הזו, וכאשר תכתבו $ לפני ה- string שלכם, הוא יוכל להכיל שמות משתנים.

לדוגמא:

string name = "Eliran";string fruit = "Apple";Console.WriteLine($"{name} is eating an {fruit}");

 

8. Roslyn

החידוש האחרון שאדבר עליו, הוא לא בדיוק חידוש ב- C# 6, אלא יותר ב- Visual Studio 2015:

Visual Studio 2015 היא הגרסא הראשונה של Visual Studio שבאה עם הקומפיילר החדש של .NET - רוסלין! למי שלא מכיר, רוסלין הוא קומפיילר חדש לחלוטין, שלעומת הישן, כתוב כולו ב- C# (במקום ב- C++), והוא Open Source תחת רישיון Apache.

רוסלין מפותח כבר כמה שנים, כאשר היה ניתן להשתמש בו באמצעות תוספים ל- Visual Studio, או ב- Visual Studio Community.

הצעד הזה חשוב מאוד, כיוון שהוא מלמד על זניחת הקומפיילר הקודם ומעבר לפלטפורמת Open Source, שבה באופן תאורתי - כל אחד יכול להרחיב את השפה, או למשל להשתמש בקוד של רוסלין על מנת לקמפל קוד C# לפלטפורמות אחרות.

זהו לבנתיים על C# 6. קיימים עוד שינויים חשובים ומעניינים, כמו await ו- nameof, אבל עליהם כבר ארחיב בפוסט אחר.

שמחתי לראות שהשפה ממשיכה להתרחב ולהתפתח.

תגובות

פוסט מצויין!
טל בן-דוד הגב
יפה מאוד אלירן!
Hadar הגב
תודה
משה הגב
חבל שהם לא מימשו חצי ממה שהם רצו..
C3PO הגב
לC3PO: הם שמים בבטא כל מיני דברים ואז מורידים את מה שהמתכנתים לא אהבו..
Hadar הגב
תודה רבה.
aviv הגב
my weblog; łuska babki jajowatejhttp://www.acdcpolska.pl (www.acdcpolska.pl)
Andres Hatfield הגב
I'm really enjoying the theme/design of your web site. Do you ever run into any internet browser compatibility problems? A small number of my blog readers have complained about my website not operating correctly in Explorer but looks great in Safari. Do you have any advice to help fix this issue?
Valentina הגב
Awesome post.
Angie הגב
Quality stuff, about to share on my Twitter. Unrelated, but anyone suffering from diabetes here? If so, check out this great information I found.
Rosa הגב
Hi there it's me, I am also visiting this web page daily, this web site is genuinely pleasant and the people are actually sharing good thoughts.
best hand spinner tour du monde הגב
I'm very happy to find this website. I wanted to thank you for ones time for this particularly wonderful read!! I definitely really liked every little bit of it and I have you book-marked to look at new stuff in your site.
read this post here הגב
What a information of un-ambiguity and preserveness of precious knowledge about unexpected emotions.
ijoy reaper plus tank הגב
Hello, I enjoy reading through your article post. I like to write a little comment to support you.
Terrence הגב
Hey! I just wanted to ask if you ever have any issues with hackers? My last blog (wordpress) was hacked and I ended up losing months of hard work due to no backup. Do you have any methods to stop hackers?
vaporesso tarot 200w tc box mod הגב
This is the right blog for anyone who would like to find out about this topic. You understand so much its almost tough to argue with you (not that I really would want to…HaHa). You certainly put a brand new spin on a topic that has been discussed for years. Wonderful stuff, just excellent!
smoant charon 218 הגב
WOW just what I was looking for. Came here by searching for obs ace sub ohm tank
Lynn הגב
Thanks , I've recently been looking for information approximately this subject for ages and yours is the best I have discovered till now. But, what in regards to the conclusion? Are you certain in regards to the source?
electronic cigarette הגב
Very soon this site will be famous amid all blog people, due to it's pleasant content
kanger cl tank הגב
I just could not depart your website prior to suggesting that I actually enjoyed the standard information an individual provide on your guests? Is gonna be back regularly in order to check out new posts
look at these guys הגב
Wonderful beat ! I would like to apprentice while you amend your site, how can i subscribe for a blog website? The account aided me a acceptable deal. I had been tiny bit acquainted of this your broadcast offered bright clear idea
e cigs הגב
First of all I want to say excellent blog! I had a quick question in which I'd like to ask if you don't mind. I was curious to know how you center yourself and clear your head before writing. I have had a difficult time clearing my mind in getting my thoughts out there. I do enjoy writing but it just seems like the first 10 to 15 minutes are generally wasted just trying to figure out how to begin. Any suggestions or hints? Cheers!
electronic cigarette הגב
I was suggested this website by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my difficulty. You are wonderful! Thanks!
smok xpro m22 הגב
Hi, this weekend is pleasant designed for me, for the reason that this time i am reading this enormous informative post here at my home.
Lucille הגב
Hello, everything is going perfectly here and ofcourse every one is sharing data, that's in fact good, keep up writing.
Kassie הגב
Hi there to every body, it's my first pay a quick visit of this web site; this website consists of awesome and in fact good material for readers.
rebuildable tank atomizer review הגב
Hi there to every one, the contents existing at this web page are really amazing for people knowledge, well, keep up the good work fellows.
e cigs הגב
Wow, superb blog format! How lengthy have you been blogging for? you made running a blog look easy. The full glance of your site is great, as neatly as the content material!
ecigarette הגב
It is not my first time to pay a quick visit this site, i am visiting this site dailly and obtain nice data from here daily.
arctic tank rba הגב
Woah! I'm really loving the template/theme of this blog. It's simple, yet effective. A lot of times it's very difficult to get that "perfect balance" between user friendliness and visual appeal. I must say you have done a great job with this. Also, the blog loads very quick for me on Opera. Exceptional Blog!
revolver mod vape הגב
Hello this is kind of of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I'm starting a blog soon but have no coding know-how so I wanted to get guidance from someone with experience. Any help would be greatly appreciated!
useful link הגב
Great beat ! I wish to apprentice while you amend your website, how can i subscribe for a blog site? The account helped me a acceptable deal. I had been tiny bit acquainted of this your broadcast offered bright clear idea
guardian one vaporesso הגב
It's nearly impossible to find educated people for this subject, but you sound like you know what you're talking about! Thanks
smok xpro m65 הגב
Hmm it seems like your blog ate my first comment (it was extremely long) so I guess I'll just sum it up what I had written and say, I'm thoroughly enjoying your blog. I too am an aspiring blog blogger but I'm still new to the whole thing. Do you have any helpful hints for rookie blog writers? I'd genuinely appreciate it.
Homepage הגב
Hi there! Would you mind if I share your blog with my facebook group? There's a lot of people that I think would really appreciate your content. Please let me know. Cheers
click here to find out more הגב
If some one desires expert view about blogging and site-building then i propose him/her to visit this website, Keep up the fastidious work.
sigelei 90w plus tc 26650 box mod kit הגב
Hello! Do you know if they make any plugins to safeguard against hackers? I'm kinda paranoid about losing everything I've worked hard on. Any recommendations?
white kanger subox mini הגב
Normally I don't read article on blogs, however I wish to say that this write-up very compelled me to check out and do it! Your writing style has been surprised me. Thanks, very nice post.
revenger kit הגב
I'm gone to say to my little brother, that he should also go to see this weblog on regular basis to obtain updated from most up-to-date reports.
best e cigs on the market הגב
It's impressive that you are getting thoughts from this paragraph ass well as fromm our argument made at this place.
best e cigarettes india הגב
I really like your site.. keep up the nice work! Have you any idea what the theme is by the way?
gooker toadstools הגב
Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates. I've been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.
cute girl הגב
For this video game, have your gamers enter into sets.
tulasklad.ru הגב

הוסף תגובה