بهذا الموضوع أنهي الاضافات في سي# 2..
بقية الاضافت تجدها في الوصلات التالية:
تعريف نوع بشكل جزئي Partial Types
هذه الخاصية الجديدة التي تمت اضافتها في سي# 2 ، تمكنك من تعريف class او struct او interface في عدة ملفات مصدرية . حيث جزء من التعريف في ملف وجزء في ملف آخر .
هذه الميزة مهمة في عدة نواحي:
1- إذا كان التعريف سوف يعمل عليه مطورين فكل مطوريطور جزء من النوع
2- إذا أردت اضافة كود على أنواع تم انشائها بشكل آلي عن طريق visual studio ، فمثلا يمكنك الاضافة على strong typed dataset class و form class .
طبعا هذه الخاصية هي اضافة للمترجم والمترجم أثناء الترجمة يقوم بدمج الأنواع الجزئية في ملف واحد . أما بنية الدوت النيت فلا تعرف أي شئ عن الأنواع الجزئية .
تمت اضافة كلمة محجوزة جديدة للغة partial يتم اضافتها على كل نوع يمكن أن يكون جزئي .. إذا أردنا تعريف الكلاس Student بشكل جزئي في ملفين فكل ملف يجب أن يحتوي على التعريف التالي :
File1.cs
======
public partial class Student
{
int Id {}
}
File2.cs
======
public partial class Student
{
string Name {}
}Property Accessor Accessibility
هذه الميزة جديدة في سي# 2 .. وهي موجودة بالأساس في VB.NET .. حيث الآن يمكنك تغيير صلاحيات الوصول إلى كل من get & put accessor في ال property . ففي معظم الأحيان نريد أن نجعل get من صلاحيات public و set من صلاحيات protected .
مثال على هذا:
public class MyType {
private string _name;
public string Name {
get { return _name; }
protected set { _name = value; }
}
}كلاس من نوع static .
بعض الكلاسات التي ننشئها تحتوي فقط على توابع تابعة للكلاس نفسه وليس للكائن أي أقصد توابع من نوع static . فالآن في سي# 2 ، يمكننا أن نعلم هذا الكلاس على أنه static إذا كنا متأكدين أن جميع التوابع في هذا الكلاس من نوع static .. وبالتالي إذا سقطت سهوا الكلمة static في كلاس معين فإن المترجم سوف ينبهنا عن خطأ
Friend Assemblies :
هذه الخاصية التي تم اضافتها جديدا تمكن assembly معينة من الوصول إلى التعاريف الداخلية internal في assembly اخرى . وهي ببساطة أن نضيف attribute في ال assembly الأساسية ومن خلالها نعرف ال assembly الصديقة بأنها يمكن أن تصل إلى التعاريف الinternals .
مثال:
1stAssembly
==========
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleTo(“2ndAssembly, PublicKeyToken=21231231ababab”)]
Internal class InternalType { … }
2ndAssembly
==========
class Program
{
static void Main()
{
InternalType t = new InternalType();
}
}#pragma Warning
يمكنك من خلالها تعطيل وتفعيل رسائل ال warning التي يظهرها المترجم . ويمكنك تحديد رقم الwarning من أجل هذا .
#pragma warning disable 332 // disable warning 332 #pragma warning enable 332 // enable warning 332 #pragma warning enable // enable all warnings #pragma warning disable // disable all warnings
