نسخة الكود كما يلي:
// يبدأ التعليق السطر الفردي بـ //
/*
هذه هي الطريقة التي توجد بها التعليقات متعددة الخطوط
*/
/// <summary>
/// xml تعليقات المستند
/// </summary>
// إعلان مساحة الاسم التي يستخدمها التطبيق
باستخدام النظام ؛
باستخدام system.collections.generic ؛
باستخدام system.data.entity ؛
باستخدام System.Dynamic ؛
باستخدام system.linq ؛
باستخدام system.linq.expressions ؛
باستخدام system.net ؛
باستخدام System.Threading.Tasks ؛
باستخدام System.io ؛
// تحديد النطاق وتنظيم الكود في الحزم
تعلم مساحة الاسم
{
// كل ملف .CS يحتاج إلى احتواء فئة واحدة على الأقل بنفس اسم الملف كما
// قد لا تفعل ذلك ، لكن هذا ليس جيدًا.
الطبقة العامة LearnCsharp
{
// إذا كنت قد استخدمت Java أو C ++ من قبل ، يمكنك القفز مباشرة إلى النص التالي "ميزات مثيرة للاهتمام"
بناء جملة الفراغ الثابت العام ()
{
// استخدم console.writeLine لطباعة المعلومات
Console.Writeline ("Hello World") ؛
Console.WriteLine (
"عدد صحيح:" + 10 +
"مزدوج:" + 3.14 +
"Boolean:" + True) ؛
// print with console.write بدون رمز كسر الخط
console.write ("Hello") ؛
Console.write ("World") ؛
////////////////////////////////////////////////////////////// /
// الأنواع والمتغيرات
//
// استخدم <type> <ame> لتحديد المتغيرات
////////////////////////////////////////////////////////////// /
// sbyte - موقع عدد صحيح 8 بت
// (-128 <= sbyte <= 127)
sbyte foosbyte = 100 ؛
// بايت - عدد صحيح غير موقعة 8 بت
// (0 <= byte <= 255)
بايت foobyte = 100 ؛
// مختصرة - عدد صحيح 16 بت
// توقيع - (-32،768 <= قصيرة <= 32،767)
// غير موقعة - (0 <= Ushort <= 65،535)
fooshort قصيرة = 10000 ؛
Ushort fooushort = 10000 ؛
// integer - عدد صحيح 32 بت
int fooint = 1 ؛
uint foouint = 1 ؛
// long - عدد صحيح 64 بت
Long Foolong = 100000l ؛
Ulong Fooulong = 10000L ؛
// الرقم الافتراضي إلى int أو uint (اعتمادًا على الحجم)
// استخدم L للإشارة إلى نوع القيمة المتغيرة الطول أو Ulong
// Double - Double 64 بت IEEE 754 رقم نقطة العائمة
Double Foodouble = 123.4 ؛
// Float - رقم واحد دقة 32 بت IEEE 754 العائمة
Float Foofloat = 234.5f ؛
// استخدم F للإشارة إلى أن نوع القيمة المتغير هو تعويم
// Decimal - نوع بيانات 128 بت ، مع دقة أعلى من أنواع النقاط العائمة الأخرى ، مناسبة للتمويل والتمويل
عشري الغذاء = 150.3m ؛
// قيمة منطقية - صواب وكاذبة
Bool Fooboolean = True ؛
// char - حرف يونيكود واحد 16 بت
char foochar = 'a' ؛
// سلاسل - على عكس النوع الأساسي السابق ، فإن السلسلة ليست قيمة ، ولكن مرجع. هذا يعني أنه يمكنك تعيين السلسلة على Null.
String foOString = " /" Escape /"Quotes وإضافة /n (خطوط جديدة) و /t (علامات التبويب)" ؛
console.writeline (foostring) ؛
// يمكنك الوصول إلى كل حرف من سلسلة من خلال الفهرس:
charfromstring = foostring [1] ؛
// لا يمكن تعديل السلسلة: لا يعمل foostring [1] = 'x'.
// قارن السلاسل وفقًا لإعدادات اللغة الحالية ، غير حساسة للحالة
String.compare (foostring ، "x" ، stringComparison.CurrentCultureIgnoreCase) ؛
// تنسيق السلسلة على أساس Sprintf
String foOfs = string.format ("تحقق ، {0} {1} ، {0} {1: 0.0}" ، 1 ، 2) ؛
// التاريخ والتنسيق
dateTime Foodate = dateTime.Now ؛
console.writeline (foodate.toString ("hh: mm ، dd mmm yyyy")) ؛
// استخدم رمز @ لإنشاء سلاسل عبر الأسطر. استخدم "" لتمثيل "
سلسلة bazstring = @"إليك بعض الأشياء
على خط جديد!
// استخدم const أو القراءة فقط لتحديد الثوابت ، ويتم حساب الثوابت أثناء التجميع
const int hours_i_work_per_week = 9001 ؛
////////////////////////////////////////////////////////////// /
// بنية البيانات
////////////////////////////////////////////////////////////// /
// Array - يبدأ العد من 0. عند إعلان صفيف ، تحتاج إلى تحديد طول الصفيف.
// شكل إعلان صفيف هو كما يلي:
// <TaTatype> [] <var name> = new <datatype> [<size array>] ؛
int [] Intarray = new int [10] ؛
// طرق أخرى لإعلان المصفوفات وتهيئتها:
int [] y = {9000 ، 1000 ، 1337} ؛
// الوصول إلى عناصر الصفيف
console.writeline ("Intarray @ 0:" + Intarray [0]) ؛
// يمكن تعديل Array
Intarray [1] = 1 ؛
// قائمة
// القوائم أكثر شيوعًا من المصفوفات لأن القوائم أكثر مرونة.
// تنسيق قائمة الإعلان كما يلي:
// list <DataType> <var name> = new list <datatype> () ؛
قائمة <int> intlist = قائمة جديدة <int> () ؛
قائمة <Tring> StringList = New List <String> () ؛
قائمة <int> z = قائمة جديدة <int> {9000 ، 1000 ، 1337} ؛
// <> بالنسبة للأعداء - الرجوع إلى ما يلي
// لا توجد قيمة افتراضية للقائمة.
intlist.add (1) ؛
console.writeline ("intlist @ 0:" + intlist [0]) ؛
// هياكل البيانات الأخرى:
// مكدس/قائمة الانتظار
// قاموس (تنفيذ جدول التجزئة)
// مجموعة التجزئة
// مجموعة القراءة فقط
// tuple (.net 4+)
/////////////////////////////////////////////
// عامل
/////////////////////////////////////////////
console.writeline ("/n-> مشغلي") ؛
int i1 = 1 ، i2 = 2 ؛
// الحساب المباشر
Console.Writeline (i1 + i2 - i1 * 3/7) ؛
// خذ الباقي
Console.Writeline ("11 ٪ 3 =" + (11 ٪ 3)) ؛
// قارن المشغلين
Console.Writeline ("3 == 2؟" + (3 == 2)) ؛
Console.Writeline ("3! = 2؟" + (3! = 2)) ؛
Console.Writeline ("3> 2؟" + (3> 2)) ؛
Console.Writeline ("3 <2؟" + (3 <2)) ؛
Console.Writeline ("2 <= 2؟" + (2 <= 2)) ؛
Console.Writeline ("2> = 2؟" + (2> = 2)) ؛
// Bit Operator
/*
~ عكس
<< تحرك اليسار (موقعة)
>> تحرك يمينًا (موقعة)
& و
^ bitwise xor
|
*/
// الذاكرة الذاتية ، النزول الذاتي
int i = 0 ؛
console.writeline ("/n-> inc/dec-rementation") ؛
console.writeline (i ++) ؛
console.writeline (++ i) ؛
Console.Writeline (I--) ؛
Console.Writeline (-i) ؛
/////////////////////////////////////////////
// هيكل التحكم
/////////////////////////////////////////////
console.writeline ("/n-> هياكل التحكم") ؛
// إذا كان بيان مشابه لـ C
int j = 10 ؛
إذا (j == 10)
{
console.writeline ("أحصل على طباعة") ؛
}
آخر إذا (j> 10)
{
console.writeline ("أنا لا") ؛
}
آخر
{
console.writeline ("أنا أيضا لا") ؛
}
// التعبير ثلاثي
// يمكن كتابة عبارة بسيطة إذا/آخر على النحو التالي:
//
سلسلة isTrue = (صحيح)؟
// بينما حلقة
int foowhile = 0 ؛
بينما (foowhile <100)
{
// التكرارات 100 مرة ، foowhile 0-> 99
foowhile ++ ؛
}
// تفعل أثناء حلقة
int foodoWhile = 0 ؛
يفعل
{
// التكرارات 100 مرة ، FoodoWhile 0-> 99
foodowhile ++ ؛
} بينما (foodowhile <100) ؛
// للحلقة
// للهيكل الحلقة => لـ (<الشرط الأولي> ؛ <Condate> ؛ <Spe>)
لـ (int foofor = 0 ؛ foofor <10 ؛ foofor ++)
{
// التكرارات 10 مرات ، فوفور 0-> 9
}
// foreach حلقة
// foreach loop structure => foreach (<type type> <iter> في <regheriprical>)
.
// أنواع التجميع (المصفوفات ، القوائم ، القواميس ...) ضمن إطار .NET ، تنفذ جميع هذه الواجهات.
// في الكود التالي ، يمكن حذف Tochararray () لأن السلسلة تنفذ أيضًا iEnumerable.
Foreach (شخصية char في "Hello World". tochararray ())
{
// تكرار من خلال جميع الأحرف في السلسلة
}
// بيان التبديل
// Switch مناسبة لأنواع البيانات القصيرة والاختصار و int و int.
// ينطبق أيضًا على التعداد ، بما في ذلك فئات السلسلة ،
// وبعض الفئات التي تغلف القيم الأصلية: الحرف ، البايت ، القصير ، والتكوين الصحيح.
int month = 3 ؛
سلسلة شهور.
التبديل (شهر)
{
الحالة 1:
شهور = "يناير" ؛
استراحة؛
الحالة 2:
شهور = "فبراير" ؛
استراحة؛
الحالة 3:
شهور = "مارس" ؛
استراحة؛
// يمكنك مطابقة عبارات الحالة المتعددة مرة واحدة
// ولكن تحتاج إلى استخدام Break بعد إضافة بيان الحالة
// (وإلا تحتاج إلى استخدام بيان GOTO Case X بشكل صريح)
الحالة 6:
الحالة 7:
الحالة 8:
شهرين = "وقت الصيف !!" ؛
استراحة؛
تقصير:
شهور = "بعض الشهر الآخر" ؛
استراحة؛
}
/////////////////////////////////////////////
// قم بتحويل السلسلة إلى عدد صحيح ، وسيتم طرح استثناء إذا فشل التحويل:
/////////////////////////////////////////////
// تحويل البيانات
// قم بتحويل السلسلة إلى عدد صحيح ، وسيتم طرح استثناء إذا فشل التحويل:
int.parse ("123") ؛ // إرجاع "123" من نوع عدد صحيح
// سيحاول TryParse تحويل النوع ، وإذا فشل ، فسيقوم بإرجاع النوع الافتراضي ، مثل 0
int tryint
إذا (int.tryparse ("123" ، Out Tryint)) // funciton هو منطقي
Console.Writeline (Tryint) ؛
// تحويل الأعداد الصحيحة إلى السلاسل
// Convert Class يوفر سلسلة من طرق التحويل المريحة
Convert.ToString (123) ؛
// أو
tryint.toString () ؛
}
/////////////////////////////////////////////
// عطوف
/////////////////////////////////////////////
فئات الفراغ الثابتة العامة ()
{
// انظر إعلان الكائن في نهاية الملف
// تهيئة الكائن مع جديد
رحلة الدراجات = دراجة جديدة () ؛
// استدعاء طريقة الكائن
Trek.Speedup (3) ؛
trek.cadence = 100 ؛
// عرض معلومات الكائن.
console.writeline ("TREK info:" + trek.info ()) ؛
// إنشاء قرش جديد
pennyfarthing funbike = new Pennyfarthing (1 ، 10) ؛
console.writeline ("funbike info:" + funbike.info ()) ؛
console.Read () ؛
} // نهاية الطريقة الرئيسية
// يجب أن يكون للبرنامج الطرفي الطرفي طريقة رئيسية مثل الإدخال
الفراغ الثابت العام (سلسلة [] args)
{
otherInterestingFeatures () ؛
}
//
// ميزات مثيرة للاهتمام
//
// توقيع الطريقة الافتراضية
الجمهور // الرؤية
ثابت // يسمح المكالمات المباشرة بالفصول دون إنشاء مثيلات أولاً
int // قيمة الإرجاع
methodsIratures (
int maxcount ، // المتغير الأول ، النوع هو عدد صحيح
عدد int = 0 ، // إذا لم يتم تمرير قيمة واردة ، فإن القيمة الافتراضية هي 0
int آخر = 3 ،
params string [] OtherParams // التقاط معلمات أخرى
)
{
العودة -1 ؛
}
// يمكن إعادة تسمية الطريقة طالما أن التوقيع مختلف
طرق الفراغ الثابتة العامة (سلسلة maxcount)
{
}
// generics
// يتم تحديد فئات TKEY و TVALUE عند استدعاء الوظيفة مع المستخدم.
// الوظيفة التالية تحاكي setDefault من Python
SetDefault SetDefault الثابتة العامة <tkey ، tvalue> (
المعرف <tkey ، tvalue> ، القاموس ،
مفتاح tkey ،
tvalue defaultItem)
{
نتيجة tvalue
if (! dictionary.TrygetValue (مفتاح ، نتيجة خارج)))
إرجاع قاموس [المفتاح] = defaultItem ؛
نتيجة العودة
}
// يمكنك الحد من نطاق القيم الواردة
الفراغ الثابت العام iterateandprint <t> (t toprint) حيث t: ienumerable <int>
{
// يمكننا التكرار لأن T لا يمكن التعداد
foreach (var ite in toprint)
// ITTM عدد صحيح
console.writeline (item.ToString ()) ؛
}
باطل ثابت آخر في الميزات الأخرى ()
{
// معلمات اختيارية
methodsInatures (3 ، 1 ، 3 ، "البعض" ، "Extra" ، "Strings") ؛
MethodsInatures (3 ، آخر: 3) ؛
// تمديد الطريقة
int i = 3 ؛
i.print () ؛
// يمكن أن يكون نوع فارغ مفيدًا جدًا لتفاعل قاعدة البيانات وقيم الإرجاع.
// ستتم إضافة أي نوع قيمة (أي ليس فئة) إلى نوع غير قاطع بعد إضافة لاحقة؟
// <type>؟
int؟
console.writeline ("متغير لاغية:" + nullable) ؛
bool hasvalue = nullable.hasvalue ؛
// هل يستخدم السكر النحوي لتحديد القيم الافتراضية
// في حالة وجود متغير فارغ
int notnullable = nullable؟
// الاستدلال نوع متغير
// يمكنك السماح للمترجم بالاستنتاج أنواع المتغيرات:
var Magic = "Magic عبارة عن سلسلة ، في وقت الترجم ، لذلك لا تزال تحصل على سلامة الكتابة" ؛
// السحر = 9 ؛
// generics
//
Var Phonebook = New Dictionary <String ، String> () {
{"سارة" ، "212 555 5555"} // إضافة إدخال جديد إلى دفتر الهاتف
} ؛
// استدعاء setDefault محدد أعلاه على أنه عام
Console.Writeline (SetDefault <string ، string> (دفتر الهاتف ، "Shaun" ، "No Phone") ؛
// لا تحتاج إلى تحديد tkey أو tvalue ، لأنها ستستمد ضمنيًا
Console.Writeline (SetDefault (دفتر الهاتف ، "سارة" ، "لا هاتف") ؛
// تعبير Lambda - يتيح لك حل الوظائف مع سطر واحد من التعليمات البرمجية
func <int ، int> square = (x) => x * x ؛
Console.Writeline (Square (3)) ؛
// إدارة الموارد القابلة للتخلي - تتيح لك التعامل بسهولة مع الموارد غير المدارة. معظم الكائنات التي تصل إلى الموارد غير المدارة (مشغلي الملفات ، سياق الجهاز ، وما إلى ذلك) تنفيذ واجهة Idisposable.
// سوف يقوم استخدام العبارة بتنظيف الكائن القابل للاستمتاع بك.
باستخدام (DreamWriter Writer = New StreamWriter ("log.txt"))
{
Writer.Writeline ("لا شيء مشبوه هنا") ؛
// في نهاية النطاق ، سيتم إعادة تدوير المورد
// (حتى لو تم طرح استثناء ، فسيظل يتم إعادة تدويره)
}
// إطار موازي
// http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/paralled-programming-in-net-framework-4-getting-started.aspx
مواقع الويب var = سلسلة جديدة [] {
"http://www.google.com" ، "http://www.reddit.com" ،
"http://www.shaunmccarthy.com"
} ؛
ردود var = القاموس الجديد <string ، string> () ؛
// افتح مؤشر ترابط جديد لكل طلب ودمج النتائج قبل تشغيل الخطوة التالية
الموازي. للمواقع ،
New Paralleoptions () {maxDegreeOfparallemis = 3} ، // Max of 3 Threads
الموقع =>
{
// افعل شيئًا يستغرق وقتًا طويلاً على الملف
باستخدام (var r = webrequest.create (New URI (موقع الويب)). getResponse ())
{
ردود [موقع ويب] = R.ContentType ؛
}
}) ؛
// لن يتم تشغيل الرمز التالي حتى يتم اكتمال جميع الطلبات
foreach (مفتاح var في الردود. keys)
console.writeline ("{0}: {1}" ، مفتاح ، ردود [مفتاح]) ؛
// كائنات ديناميكية (إنها مريحة للغاية للاستخدام مع لغات أخرى)
Dynamic Student = new ExploSOBject () ؛
student.firstName = "الاسم الأول" ؛
// يمكنك حتى إضافة طرق (قبول سلسلة ، إخراج سلسلة)
student.introduce = new func <string ، string> (
(مقدمة) => string.format ("مرحبًا {0} ، هذا {1}" ، student.firstName ، repustuceto)) ؛
console.writeline (student.introduce ("beth")) ؛
// iqueryable <T> - تنفذها جميع المجموعات تقريبًا ، مما يجلب لك نهج الخريطة/الفلتر/تقليل النمط
var bikes = new list <bicycle> () ؛
الدراجات.
Bikes.sort ((B1 ، B2) => b1.wheels.compareto (b2.wheels)) ؛
نتيجة var = الدراجات
. في أي مكان (B => B.Wheels> 3) // filter - يمكن استخدامه في السلاسل (العودة إلى iqueryable)
. where (b => b.isbroken && b.hastassles)
.select (B => B.ToString ()) ؛
var sum = bikes.sum (b => B.Wheels) ؛
// إنشاء قائمة بالكائنات الضمنية التي تم إنشاؤها بناءً على بعض معلمات الدراجة
var bikesummaries = bikes.select (b => new {name = b.name ، isAwesome =! b.isbroken && b.hastassles}) ؛
// من الصعب إظهاره ، ولكن يمكن للمترجم أن يستنتج أنواع الكائنات أعلاه قبل تجميع الكود.
foreach (var bikesummary in bikesummaries. where (b => b.isawesome))
console.writeline (Bikesummary.name) ؛
// الهليون
// خصائص الشر - الجمع بين LINQ والعمليات المتوازية
var threeWheelers = bikes.asparallel (). حيث (b => b.Wheels == 3) .select (b => b.name) ؛
// سيتم تشغيل الرمز أعلاه بشكل متزامن. سيتم فتح مؤشر الترابط تلقائيًا وسيتم حساب النتائج بشكل منفصل. مناسبة للسيناريوهات متعددة النواة وكبيرة.
// LINQ - MAP IQUERYABLE <T> للتخزين ، تنفيذ التأخير ، مثل قاعدة بيانات تعيين LINQTOSQL ، تعيين مستندات XML LINQTOXML.
var db = new bikerespository () ؛
// تم تأخير التنفيذ ، وهو أمر جيد للاستعلام عن قاعدة البيانات
var filter = db.bikes.here (b => b.hastassles) ؛
إذا كان (42> 6) // يمكنك زيادة التصفية بشكل مستمر ، بما في ذلك التصفية الشرطية ، على سبيل المثال لميزة البحث المتقدم
Filter = filter.here (b => b.isbroken) ؛
var query = filter
.orderby (b => B.Wheels)
.Thenby (B => B.Name)
.select (B => B.Name) ؛
// الآن قم بتشغيل الاستعلام ، وسيتم فتح القارئ عند تشغيل الاستعلام ، لذلك تكرر على نسخة
foreach (سلسلة دراجة في الاستعلام)
console.writeline (النتيجة) ؛
}
} // end LearncSharp Class
// يمكنك تضمين فئات أخرى في نفس ملف .CS
امتدادات الطبقة الثابتة العامة
{
// وظيفة ممتدة
طباعة الفراغ الثابتة العامة (هذا الكائن OBJ)
{
console.writeline (obj.toString ()) ؛
}
}
// إعلان بناء جملة الفصل:
// <public/private/protected/internal> class <class name> {
// // حقول البيانات ، المُنشئين ، الوظائف الداخلية.
/// في Java ، تسمى الوظائف الطرق.
//}
دراجة الطبقة العامة
{
// حقول الدراجات والمتغيرات
الإيقاع العام // الجمهور: يمكن الوصول إليه في أي مكان
{
الحصول على // - تحديد طريقة للحصول على السمات
{
العودة _cadence ؛
}
SET // SET - تحديد طريقة لتعيين الخصائص
{
_cadence = القيمة ؛
}
}
int _cadence الخاص ؛
يمكن الوصول إلى فئات الافتراضية الافتراضية // الفئات الفرعية المحمية
{
الحصول
تعيين؛
}
العجلات الداخلية الداخلية // داخلية: يمكن الوصول إليها داخل نفس التجميع
{
يحصل؛
مجموعة خاصة
}
int _speed ؛
اسم السلسلة العامة {get ؛
// يحتوي نوع التعداد على مجموعة من الثوابت التي تعين الاسم إلى القيمة (ما لم ينص على خلاف ذلك ، عدد صحيح).
// يمكن أن تكون أنواع عنصر eNMU بايت ، sbyte ، قصيرة ، ushort ، int ، uint ، طويلة ، ulong. لا يمكن أن تحتوي التعداد على نفس القيمة.
التعداد العام BikeBrand
{
أيست ،
BMC ،
Electra = 42 ، // يمكنك تعيين القيم بشكل صريح
Gitane // 43
}
// هذا النوع الذي نحدده في فئة الدراجات ، لذلك فهو نوع مضمّن. يجب الرجوع إلى الكود خارج هذه الفئة باستخدام Bicycle.brand.
العلامة التجارية العامة BikeBrand ؛
// طريقة ثابتة
// نوع الطريقة الثابتة هو نفسه ولا ينتمي إلى كائن معين. يمكنك الوصول إليها دون الرجوع إلى الكائنات.
الثابتة العامة int bicyclescreated = 0 ؛
// قيمة القراءة فقط
// يتم تحديد قيم القراءة فقط في وقت التشغيل ولا يمكن تعيين قيم فقط ضمن الإعلان أو المنشئ.
readonly bool _hascardsinspokes = false ؛
// البنائين هي وسيلة لإنشاء فصول.
// أدناه هو مُنشئ افتراضي.
دراجة عامة ()
{
this.gear = 1 ؛
الإيقاع = 50 ؛
_speed = 5 ؛
name = "bontrager" ؛
العلامة التجارية = BikeBrand.Aist ؛
Bicyclescreated ++ ؛
}
// مثال آخر على المنشئ (بما في ذلك المعلمات)
دراجة عامة (int startcadence ، int startspeed ، int startGear ،
اسم السلسلة ، Bool HascardsInspokes ، BikeBrand Brand)
: قاعدة () // قاعدة الاتصال الأولى
{
الترس = startGear ؛
الإيقاع = startCadence ؛
_speed = startspeed ؛
الاسم = الاسم ؛
_hascardsinspokes = hascardsinspokes ؛
العلامة التجارية = العلامة التجارية ؛
}
// يمكن استخدام المنشئ في السلاسل
دراجة عامة (int startcadence ، int startspeed ، BikeBrand Brand):
هذا (StartCadence ، startspeed ، 0 ، "Big Wheels" ، True ، Brand)
{
}
// بناء الجملة:
5
// يمكن لفئات تنفيذ أساليب Getters و Setters لحقولها للحقول ، أو يمكنها تنفيذ الخصائص (C# الموصى بها لاستخدام هذا).
// يمكن أن يكون لمعلمات الطريقة قيم افتراضية. في حالة القيم الافتراضية ، يمكن حذف المعلمات المقابلة عند استدعاء الطريقة.
تسريع الفراغ العام (زيادة int = 1)
{
_speed += الزيادة ؛
}
تباطؤ الفراغ العام (انخفاض int = 1)
{
_speed -= تراجع ؛
}
// يمكن للخصائص الوصول إلى القيم وتعيينها. عندما تحتاج فقط إلى الوصول إلى البيانات ، فكر في استخدام الخصائص. يمكن للسمات تحديد GET and SET ، أو كليهما.
منطقي خاص _hastassles ؛
Bool Bool Hastassles // Accessor العامة
{
الحصول على {return _hastassles ؛
تعيين {_hastassles = value ؛
}
// يمكنك تحديد الخصائص التلقائية داخل سطر واحد ، وسيقوم هذا بناء الجملة تلقائيًا بإنشاء حقول احتياطية. يمكنك ضبط المعدلات للوصول لل Getters أو المستقلين للحد من وصولهم.
Bool Isbroken {get ؛
// يمكن أن يكون تنفيذ السمات تلقائيًا
الإطارات العامة العامة
{
يحصل؛
// يمكنك تحديد معدلات الوصول لـ GET أو SET
// يعني الرمز التالي أن فئة الدراجات فقط هي التي يمكنها استدعاء مجموعة الإطارات
مجموعة خاصة
}
// طريقة لعرض خصائص الكائن
معلومات السلسلة الافتراضية العامة ()
{
إرجاع "التروس:" + العتاد +
"الإيقاع:" + الإيقاع +
"السرعة:" + _speed +
"الاسم:" + اسم +
"بطاقات في المتحدث:" + (_hascardsinspokes؟ "نعم": "لا") +
"/n -----------------------------/n"
}
// يمكن أن تكون الطريقة ثابتة. عادة ما تستخدم في الأساليب المساعدة.
Bool static bool dutwecreateenoughbycles ()
{
// في طرق ثابتة ، يمكنك فقط الرجوع إلى أعضاء ثابتين في الفصل
إرجاع Bicyclescreated> 9000 ؛
} // إذا كان فصلك يحتاج فقط إلى أعضاء ثابتين ، ففكر في أخذ الفصل بأكمله كصف ثابت.
} // نهايات فئة الدراجات
// Pennyfarthing هي فئة فرعية من الدراجات
فئة بينيفيارثن: الدراجة
{
// (بيني أبعاد هي دراجة مع عجلة أمامية كبيرة. لا تروس.)
// اتصل بالمشارك الأصل
Pennyfarthing (int startcadence ، int startspeed):
قاعدة (StartCadence ، startspeed ، 0 ، "Pennyfarthing" ، True ، BikeBrand.Electra)
{
}
التجاوز المحمي int العتاد
{
يحصل
{
العودة 0 ؛
}
تعيين
{
رمي argumentException جديد ("لا يمكنك تبديل التروس على Pennyfarthing") ؛
}
}
معلومات سلسلة التجاوز العام ()
{
سلسلة النتيجة = "دراجة Pennyfarthing" ؛
النتيجة += BASE.TOSTRING () ؛
نتيجة العودة
}
}
// الواجهة تحتوي فقط على توقيع العضو ، ولا يتم تنفيذه.
واجهة ijumpable
{
قفزة باطلة (متر مكعب) ؛
}
واجهة ibreakable
{
Bool Broken {get ؛
}
// يمكن أن ترث الفئات فئة واحدة فقط ، لكن يمكنها تنفيذ أي عدد من الواجهات
Class Mountainbike: دراجة ، ijumpable ، ibreakable
{
ضرر int = 0 ؛
قفزة باطلة عامة (متر)
{
الضرر += متر ؛
}
منطقي عام مكسور
{
يحصل
{
إرجاع الضرر> 100 ؛
}
}
}
/// <summary>
/// الاتصال بقاعدة البيانات ، مثال على LINQTOSQL. يعد رمز entityframework أولاً رائعًا (على غرار Ruby's ActivereCord ، لكنه في اتجاهين)
/// http://msdn.microsoft.com/en-us/data/jj193542.aspx
/// </summary>
الطبقة العامة راكب الدراجة النارية: DBSET
{
راكب الدراجة النارية العامة ()
: قاعدة()
{
}
DBSET <BICYCLE> الدراجات {GET ؛
}
} // مساحة الاسم النهائية
لاحظ أن الموضوعات غير المغطاة هي:
1. فلاغ
2.Attributes
3. خصائص ثابتة
4.Exceptions ، الملخص
6.asp.net (نماذج الويب/MVC/WebMatrix)
6. winforms
7. مؤسسة عرض Windows (WPF)