การคัดลอกรหัสมีดังนี้:
// ความคิดเห็นบรรทัดเดียวเริ่มต้นด้วย //
-
นี่คือความคิดเห็นแบบหลายบรรทัด
-
/// <summary>
/// XML Document Comments
/// </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 +
"Double:" + 3.14 +
"บูลีน:" + จริง);
// พิมพ์ด้วย console.write โดยไม่มีสัญลักษณ์การแบ่งบรรทัด
Console.write ("Hello");
Console.write ("World");
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////it /
// ประเภทและตัวแปร
-
// ใช้ <ply> <name> เพื่อกำหนดตัวแปร
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////it /
// SBYTE - จำนวนเต็ม 8 บิตลงนาม
// (-128 <= sbyte <= 127)
sbyte foosbyte = 100;
// byte - จำนวนเต็ม 8 บิตที่ไม่ได้ลงชื่อ
// (0 <= byte <= 255)
ไบต์ foobyte = 100;
// สั้น - จำนวนเต็ม 16 บิต
// ลงนาม - (-32,768 <= สั้น <= 32,767)
// unsigned - (0 <= ushort <= 65,535)
สั้น fooshort = 10,000;
ushort fooushort = 10,000;
// จำนวนเต็ม - จำนวนเต็ม 32 บิต
int fooint = 1;
uint foouint = 1;
// ยาว - จำนวนเต็ม 64 บิต
Long Foolong = 100000L;
ULONG FOOULONG = 10,000L;
// ตัวเลขเริ่มต้นเป็น int หรือ uint (ขึ้นอยู่กับขนาด)
// ใช้ l เพื่อระบุประเภทค่าตัวแปรนานหรือ ulong
// สองครั้ง - IEEE 64- บิตคู่ 754 หมายเลขจุดลอยตัว
double foodouble = 123.4;
// Float - ความแม่นยำเดียว 32 บิต IEEE 754 หมายเลขจุดลอยตัว
footloat foolat = 234.5f; // ความแม่นยำ: 7 บิต
// ใช้ F เพื่อระบุประเภทค่าตัวแปรคือลอยตัว
// ทศนิยม - ชนิดข้อมูล 128 บิตที่มีความแม่นยำสูงกว่าประเภทจุดลอยตัวอื่น ๆ เหมาะสำหรับการเงินและการเงิน
ทศนิยม foodecimal = 150.3m;
// ค่าบูลีน - จริงและเท็จ
bool fooboolean = true;
// char - อักขระ Unicode 16 บิตเดี่ยว
char foochar = 'a';
// strings - ไม่เหมือนกับประเภทพื้นฐานก่อนหน้านี้สตริงไม่ใช่ค่า แต่เป็นข้อมูลอ้างอิง ซึ่งหมายความว่าคุณสามารถตั้งค่าสตริงเป็น null
String foostring = " /" Escape /"Quotes และ Add /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"));
// ใช้สัญลักษณ์ @ เพื่อสร้างสตริงข้ามบรรทัด ใช้ "" เพื่อเป็นตัวแทน "
String bazstring = @"นี่คือบางสิ่งบางอย่าง
ในบรรทัดใหม่!
// ใช้ const หรืออ่านอย่างเดียวเพื่อกำหนดค่าคงที่และค่าคงที่จะคำนวณในระหว่างการรวบรวม
const int hours_i_work_per_week = 9001;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////it /
// โครงสร้างข้อมูล
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////it /
// อาร์เรย์ - การนับเริ่มตั้งแต่ 0. เมื่อประกาศอาร์เรย์คุณต้องกำหนดความยาวอาร์เรย์
// รูปแบบของการประกาศอาร์เรย์มีดังนี้:
// <tataType> [] <ชื่อ var> = new <dataType> [<size array>];
int [] intarray = new int [10];
// วิธีอื่น ๆ ในการประกาศและเริ่มต้นอาร์เรย์:
int [] y = {9000, 1000, 1337};
// เข้าถึงองค์ประกอบของอาร์เรย์
Console.WriteLine ("intarray @ 0:" + intarray [0]);
// สามารถแก้ไขอาร์เรย์ได้
Intarray [1] = 1;
// รายการ
// รายการมักใช้มากกว่าอาร์เรย์เนื่องจากรายการมีความยืดหยุ่นมากกว่า
// รูปแบบของรายการประกาศมีดังนี้:
// list <dataType> <ชื่อ var> = รายการใหม่ <dataType> ();
รายการ <int> intlist = รายการใหม่ <int> ();
รายการ <String> stringList = รายการใหม่ <String> ();
รายการ <int> z = รายการใหม่ <int> {9000, 1000, 1337};
// <> สำหรับยาชื่อสามัญ - อ้างถึงสิ่งต่อไปนี้
// ไม่มีค่าเริ่มต้นสำหรับรายการ
intlist.add (1);
Console.WriteLine ("intlist @ 0:" + intlist [0]);
// โครงสร้างข้อมูลอื่น ๆ :
// สแต็ค/คิว
// พจนานุกรม (การใช้งานตารางแฮช)
// hash collection
// คอลเล็กชันอ่านอย่างเดียว
// 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));
// บิตโอเปอเรเตอร์
-
~ ย้อนกลับ
<< ย้ายไปทางซ้าย (ลงนาม)
>> ย้ายไปทางขวา (ลงนาม)
& และ
^ 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 ("ฉันไม่ได้");
-
// การแสดงออกของไตรภาคี
// คำสั่ง IF/ELSE Simple สามารถเขียนเป็น:
// <mitions>?
String Istrue = (จริง)?
// ในขณะลูป
int foowhile = 0;
ในขณะที่ (foohile <100)
-
// iterations 100 ครั้ง, foohile 0-> 99
Foowhile ++;
-
// ทำในขณะลูป
int foodowhile = 0;
ทำ
-
// iterations 100 ครั้ง, foodowhile 0-> 99
Foodowhile ++;
} ในขณะที่ (foodowhile <100);
// สำหรับลูป
// สำหรับโครงสร้างการวนซ้ำ => สำหรับ (<เงื่อนไขเริ่มต้น>; <mited>; <step>)
สำหรับ (int foofor = 0; foofor <10; foofor ++)
-
// การวนซ้ำ 10 ครั้ง, foofor 0-> 9
-
// foreach loop
// foreach loop structure => foreach (<iter type> <iter> ใน <enumerable structure>)
// foreach loop เหมาะสำหรับวัตถุใด ๆ ที่ใช้ ienumerable หรือ ienumerable
// ประเภทการรวบรวม (อาร์เรย์, รายการ, พจนานุกรม ... ) ภายใต้. NET Framework ทั้งหมดใช้อินเทอร์เฟซเหล่านี้
// ในรหัสต่อไปนี้ tochararray () สามารถลบได้เนื่องจากสตริงยังใช้ ienumerable
foreach (ตัวละครถ่านใน "Hello World" .toChararray ())
-
// วนซ้ำอักขระทั้งหมดในสตริง
-
// คำสั่งสวิตช์
// สวิตช์เหมาะสำหรับชนิดข้อมูลไบต์สั้นถ่านและ int
// ยังใช้กับประเภทที่ระบุได้รวมถึงคลาสสตริง
// และบางคลาสที่ห่อหุ้มค่าดั้งเดิม: อักขระไบต์สั้นและจำนวนเต็ม
int เดือน = 3;
สตริงเดือน;
สวิตช์ (เดือน)
-
กรณีที่ 1:
เดือน = "มกราคม";
หยุดพัก;
กรณีที่ 2:
เดือน = "กุมภาพันธ์";
หยุดพัก;
กรณีที่ 3:
เดือน = "มีนาคม";
หยุดพัก;
// คุณสามารถจับคู่คำสั่งกรณีหลายกรณีในครั้งเดียว
// แต่คุณต้องใช้ Break หลังจากเพิ่มคำสั่งเคส
// (มิฉะนั้นคุณต้องใช้คำสั่ง GOTO CASE X อย่างชัดเจน)
กรณีที่ 6:
กรณีที่ 7:
กรณีที่ 8:
MonthString = "Summer Time !!";
หยุดพัก;
ค่าเริ่มต้น:
MonthString = "เดือนอื่น ๆ ";
หยุดพัก;
-
-
// แปลงสตริงเป็นจำนวนเต็มและข้อยกเว้นจะถูกโยนลงหากการแปลงล้มเหลว:
-
// การแปลงข้อมูล
// แปลงสตริงเป็นจำนวนเต็มและข้อยกเว้นจะถูกโยนลงหากการแปลงล้มเหลว:
int.parse ("123"); // return "123" ประเภทจำนวนเต็ม
// tryparse จะพยายามแปลงประเภทและหากล้มเหลวมันจะส่งคืนประเภทเริ่มต้นเช่น 0
int tryint;
ถ้า (int.tryparse ("123", out tryint)) // funciton เป็นบูลีน
Console.WriteLine (Tryint);
// แปลงจำนวนเต็มเป็นสตริง
// แปลงคลาสมีชุดวิธีการแปลงที่สะดวก
Convert.toString (123);
// หรือ
tryint.tostring ();
-
-
// ใจดี
-
ชั้นเรียนโมฆะคงที่สาธารณะ ()
-
// ดูการประกาศวัตถุในตอนท้ายของไฟล์
// เริ่มต้นวัตถุด้วยใหม่
Bicycle Trek = New Bicycle ();
// เรียกเมธอดวัตถุ
trek.speedup (3);
Trek.Cadence = 100;
// ดูข้อมูลของวัตถุ
Console.WriteLine ("ข้อมูลช่วงระยะการเดินทาง:" + trek.info ());
// อินสแตนซ์เพนนีใหม่
pennyfarthing funbike = pennyfarthing ใหม่ (1, 10);
Console.WriteLine ("Funbike Info:" + funbike.info ());
console.read ();
} // สิ้นสุดวิธีการหลัก
// โปรแกรมเทอร์มินัลเทอร์มินัลต้องมีวิธีการหลักเป็นรายการ
โมฆะคงที่สาธารณะหลัก (สตริง [] args)
-
อื่น ๆ ininterestingFeatures ();
-
-
// คุณสมบัติที่น่าสนใจ
-
// ลายเซ็นวิธีการเริ่มต้น
สาธารณะ // การมองเห็น
แบบคงที่ // อนุญาตให้โทรโดยตรงไปยังคลาสโดยไม่ต้องสร้างอินสแตนซ์ก่อน
ค่า int // return
MethodSignatures (
int maxCount, // ตัวแปรแรกประเภทคือจำนวนเต็ม
int count = 0, // หากไม่มีการส่งค่าขาเข้าค่าเริ่มต้นคือ 0
int อื่น = 3,
พารามิเตอร์สตริง [] otherparams // จับพารามิเตอร์อื่น ๆ
-
-
กลับ -1;
-
// วิธีการสามารถเปลี่ยนชื่อได้ตราบใดที่ลายเซ็นแตกต่างกัน
โมฆะแบบคงที่สาธารณะ (String MaxCount)
-
-
// ทั่วไป
// คลาส tkey และ tvalue ถูกระบุเมื่อเรียกฟังก์ชั่นกับผู้ใช้
// ฟังก์ชั่นต่อไปนี้จำลอง SetDefault ของ Python
สาธารณะ tvalue สาธารณะ setdefault <tkey, tvalue> (
Idictionary <tkey, tvalue> พจนานุกรม, พจนานุกรม,
คีย์ tkey,
tvalue defaultItem)
-
ผลการถ่ายทอดสด;
if (! dictionary.trygetValue (คีย์ผลลัพธ์ออก)))
ส่งคืนพจนานุกรม [คีย์] = DefaultItem;
ผลการกลับมา;
-
// คุณสามารถ จำกัด ช่วงของค่าที่เข้ามาได้
โมฆะคงที่สาธารณะ iterateandprint <t> (t toprint) โดยที่ t: ienumerable <int>
-
// เราสามารถวนซ้ำได้เพราะ t เป็นสิ่งที่แจกแจงได้
foreach (รายการ var ใน toprint)
// ittm เป็นจำนวนเต็ม
Console.WriteLine (item.toString ());
-
โมฆะคงที่สาธารณะอื่น ๆ ที่น่าสนใจ ()
-
// พารามิเตอร์เสริม
MethodSignatures (3, 1, 3, "Some", "Extra", "Strings");
MethodSignatures (3, อีก: 3);
// ขยายวิธี
int i = 3;
i.print ();
// สามารถเป็นประเภท null มีประโยชน์มากสำหรับการโต้ตอบฐานข้อมูลและค่าส่งคืน
// ประเภทใดที่มีค่า (เช่นไม่ใช่คลาส) จะถูกเพิ่มลงในประเภทที่ไม่มีค่าใช้จ่ายหลังจากเพิ่มคำต่อท้าย?
// <ply>? <ชื่อตัวแปร> = <value>
int?
Console.WriteLine ("ตัวแปรที่เป็นโมฆะ:" + Nullable);
bool hasvalue = nullable.hasvalue;
// ??
// ในกรณีที่ตัวแปรเป็นโมฆะ
int notnullable = nullable ??
// การอนุมานประเภทตัวแปร
// คุณสามารถปล่อยให้คอมไพเลอร์อนุมานประเภทตัวแปร:
var magic = "Magic เป็นสตริงในเวลาที่รวบรวมดังนั้นคุณยังคงได้รับความปลอดภัยประเภท";
// Magic = 9; // ไม่ทำงานเพราะเวทมนตร์เป็นสตริงไม่ใช่จำนวนเต็ม
// ทั่วไป
-
var phonebook = พจนานุกรมใหม่ <สตริงสตริง> () {
{"Sarah", "212 555 5555"} // เพิ่มรายการใหม่ลงในสมุดโทรศัพท์
-
// การโทร setdefault ที่กำหนดไว้ข้างต้นเป็นทั่วไป
Console.WriteLine (SetDefault <String, String> (Phonebook, "Shaun", "ไม่มีโทรศัพท์"));
// คุณไม่จำเป็นต้องระบุ tkey หรือ tvalue เพราะพวกเขาจะได้รับโดยปริยาย
Console.WriteLine (SetDefault (สมุดโทรศัพท์, "Sarah", "ไม่มีโทรศัพท์"));
// Lambda Expression - ช่วยให้คุณสามารถแก้ไขฟังก์ชั่นด้วยรหัสหนึ่งบรรทัด
func <int, int> square = (x) => x * x;
Console.WriteLine (Square (3));
// การจัดการทรัพยากรที่ถูกทอดทิ้ง - ช่วยให้คุณจัดการกับทรัพยากรที่ไม่มีการจัดการได้อย่างง่ายดาย วัตถุส่วนใหญ่ที่เข้าถึงทรัพยากรที่ไม่มีการจัดการ (ตัวดำเนินการไฟล์บริบทของอุปกรณ์ ฯลฯ ) ใช้อินเตอร์เฟส IDIsposable
// คำสั่งที่ใช้จะทำความสะอาดวัตถุ IDISPOSABLE สำหรับคุณ
ใช้ (StreamWriter Writer = New StreamWriter ("log.txt"))))
-
Writer.Writeline ("ไม่มีอะไรน่าสงสัยที่นี่");
// ในตอนท้ายของขอบเขตทรัพยากรจะถูกรีไซเคิล
// (แม้ว่าจะมีการโยนข้อยกเว้น แต่ก็จะยังคงรีไซเคิล)
-
// เฟรมเวิร์กขนาน
// http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx
var websites = new String [] {
"http://www.google.com", "http://www.reddit.com"
"http://www.shaunmccarthy.com"
-
การตอบสนอง var = พจนานุกรมใหม่ <สตริงสตริง> ();
// เปิดเธรดใหม่สำหรับแต่ละคำขอและรวมผลลัพธ์ก่อนที่จะเรียกใช้ขั้นตอนถัดไป
Parallel.foreach (เว็บไซต์
ใหม่ parallelOptions () {maxDegreeOfParallelism = 3}, // สูงสุด 3 เธรด
เว็บไซต์ =>
-
// ทำสิ่งที่ใช้เวลานานในไฟล์
ใช้ (var r = webrequest.create (ใหม่ URI (เว็บไซต์)). getResponse ())
-
คำตอบ [เว็บไซต์] = R.ContentType;
-
-
// รหัสต่อไปนี้จะไม่ทำงานจนกว่าคำขอทั้งหมดจะเสร็จสมบูรณ์
foreach (คีย์ var ในการตอบสนองคีย์)
Console.WriteLine ("{0}: {1}", คีย์, การตอบสนอง [คีย์]);
// วัตถุไดนามิก (สะดวกมากที่จะใช้กับภาษาอื่น ๆ )
Dynamic Student = new ExpandOObject ();
student.firstname = "ชื่อแรก"; // ไม่จำเป็นต้องกำหนดชั้นเรียนก่อน!
// คุณสามารถเพิ่มวิธีการ (ยอมรับสตริงเอาต์พุตสตริง)
student.introduce = new func <string, string> (
(แนะนำ) => string.format ("เฮ้ {0}, นี่คือ {1}", student.firstname, Introduceto));
Console.WriteLine (student.introduce ("Beth"));
// iQueryable <T> - คอลเลกชันเกือบทั้งหมดใช้งานนำมาซึ่งวิธีการแผนที่/ตัวกรอง/ลดสไตล์
var bikes = รายการใหม่ <Bicycle> ();
Bikes.sort ();
Bikes.Sort ((B1, B2) => B1.wheels.Compareto (b2.wheels));
var result = bikes
.where (b => b.wheels> 3) // ตัวกรอง - สามารถใช้ในโซ่ (กลับไปที่ iQueryable)
.where (b => b.isbroken && b.hastassles)
.Select (B => B.ToString ());
var sum = bikes.sum (b => b.wheels);
// สร้างรายการวัตถุโดยนัยที่สร้างขึ้นตามพารามิเตอร์บางอย่างของจักรยาน
var bikesummaries = bikes.select (b => ใหม่ {name = b.name, isawesome =! b.isbroken && b.hastassles});
// เป็นการยากที่จะแสดงให้เห็น แต่คอมไพเลอร์สามารถอนุมานประเภทวัตถุข้างต้นก่อนที่จะรวบรวมรหัส
foreach (var bikesummary ใน bikesummaries.where (b => b.isawesome))
Console.WriteLine (BikeSummary.Name);
// asparallel
// ลักษณะชั่วร้าย - การรวม LINQ และการดำเนินการแบบขนาน
var threewheelers = bikes.asparallel (). โดยที่ (b => b.wheels == 3). select (b => b.name);
// รหัสข้างต้นจะทำงานพร้อมกัน เธรดจะถูกเปิดโดยอัตโนมัติและผลลัพธ์จะถูกคำนวณแยกกัน เหมาะสำหรับสถานการณ์หลายคอร์และข้อมูลขนาดใหญ่
// LINQ - แผนที่ iQueryable <T> ไปยังที่เก็บข้อมูลล่าช้าการดำเนินการเช่นฐานข้อมูลการแมป LINQTOSQL, เอกสารการแมป LINQTOXML เอกสาร XML
var db = ใหม่ bikerespository ();
// การดำเนินการล่าช้าซึ่งเป็นสิ่งที่ดีสำหรับการสอบถามฐานข้อมูล
var filter = db.bikes.where (b => b.hastassles);
ถ้า (42> 6) // คุณสามารถเพิ่มการกรองได้อย่างต่อเนื่องรวมถึงการกรองแบบมีเงื่อนไขเช่นสำหรับคุณสมบัติการค้นหาขั้นสูง
ตัวกรอง = filter.where (b => b.isbroken);
var query = ตัวกรอง
. orderby (b => b.wheels)
. thenby (b => b.name)
.Select (b => b.name);
// ตอนนี้เรียกใช้แบบสอบถามและผู้อ่านจะเปิดเมื่อเรียกใช้การสืบค้นดังนั้นคุณจะวนซ้ำสำเนา
foreach (String Bike in Query)
Console.WriteLine (ผลลัพธ์);
-
} // จบคลาส LearnCsharp
// คุณสามารถรวมคลาสอื่น ๆ ในไฟล์. cs เดียวกัน
ส่วนขยายระดับคงที่สาธารณะ
-
// ฟังก์ชันขยาย
การพิมพ์โมฆะแบบคงที่สาธารณะ (วัตถุนี้ OBJ)
-
Console.WriteLine (obj.toString ());
-
-
// ประกาศไวยากรณ์ของคลาส:
// <สาธารณะ/ส่วนตัว/ป้องกัน/ภายใน> คลาส <ชื่อคลาส> {
// // ฟิลด์ข้อมูลตัวสร้างฟังก์ชั่นภายใน
/// ใน Java ฟังก์ชั่นเรียกว่าวิธีการ
-
จักรยานชั้นเรียนสาธารณะ
-
// สนามจักรยานและตัวแปร
Public Int Cadence // สาธารณะ: เข้าถึงได้ทุกที่
-
รับ // รับ - กำหนดวิธีการรับแอตทริบิวต์
-
กลับ _cadence;
-
SET // SET - กำหนดวิธีการตั้งค่าคุณสมบัติ
-
_cadence = value;
-
-
INT ส่วนตัว _cadence;
สามารถเข้าถึงคลาสเกียร์ Int เสมือนจริง // คลาสและคลาสย่อยสามารถเข้าถึงได้
-
รับ; // สร้างคุณสมบัติอัตโนมัติโดยไม่มีฟิลด์สมาชิก
ชุด;
-
ภายในล้อ int ภายใน // ภายใน: สามารถเข้าถึงได้ภายในชุดประกอบเดียวกัน
-
รับ;
ชุดส่วนตัว;
-
int _speed;
ชื่อสตริงสาธารณะ {get;
// ประเภท enum มีชุดของค่าคงที่ที่แมปชื่อกับค่า (เว้นแต่จะระบุไว้เป็นอย่างอื่นจำนวนเต็ม)
// ประเภทขององค์ประกอบ enmu สามารถเป็นไบต์, sbyte, สั้น, ushort, int, uint, ยาว, ulong enum ไม่สามารถมีค่าเดียวกัน
Public Enum Bikebrand
-
aist,
BMC
Electra = 42, // คุณสามารถกำหนดค่าได้อย่างชัดเจน
Gitane // 43
-
// ประเภทนี้เรากำหนดในคลาสจักรยานดังนั้นจึงเป็นประเภทอินไลน์ รหัสนอกคลาสนี้ควรอ้างอิงโดยใช้ Bicycle.Brand
แบรนด์จักรยานสาธารณะ
// วิธีการคงที่
// ประเภทของวิธีการคงที่เป็นของตัวเองและไม่ได้อยู่ในวัตถุเฉพาะ คุณสามารถเข้าถึงได้โดยไม่ต้องอ้างอิงวัตถุ
สาธารณะ int bicyclescreated = 0;
// ค่าอ่านอย่างเดียว
// ค่าอ่านอย่างเดียวจะถูกกำหนดเมื่อเวลาผ่านไปและสามารถกำหนดค่าได้ภายในการประกาศหรือตัวสร้างเท่านั้น
อ่านอย่างเดียว _hascardsinspokes = false;
// ตัวสร้างเป็นวิธีการสร้างคลาส
// ด้านล่างเป็นตัวสร้างเริ่มต้น
จักรยานสาธารณะ ()
-
this.gear = 1; // คุณสามารถใช้คำหลักนี้เพื่อเข้าถึงสมาชิกของวัตถุ
Cadence = 50;
_Speed = 5;
name = "bontrager";
แบรนด์ = bikebrand.aist;
Bicyclescreated ++;
-
// อีกตัวอย่างของตัวสร้าง (รวมถึงพารามิเตอร์)
จักรยานสาธารณะ (int startCadence, int startSpeed, int startgear,
ชื่อสตริง, bool hascardsinspokes, bikebrand brand)
: ฐาน () // ฐานการโทรครั้งแรก
-
เกียร์ = เริ่มต้น;
Cadence = StartCadence;
_Speed = startSpeed;
ชื่อ = ชื่อ;
_hascardsinspokes = hascardsinspokes;
แบรนด์ = แบรนด์;
-
// ตัวสร้างสามารถใช้ในโซ่
จักรยานสาธารณะ (Int StartCadence, Int StartSpeed, BikeBrand Brand):
นี่ (StartCadence, StartSpeed, 0, "Big Wheels", True, Brand)
-
-
// ฟังก์ชั่นไวยากรณ์:
// <public/private/protected> <return value> <ชื่อฟังก์ชัน> (<parameter>)
// คลาสสามารถใช้วิธีการรับและตัวตั้งค่าสำหรับฟิลด์สำหรับฟิลด์ของพวกเขาหรือพวกเขาสามารถใช้คุณสมบัติ (C# แนะนำให้ใช้สิ่งนี้)
// พารามิเตอร์ของวิธีการสามารถมีค่าเริ่มต้น ในกรณีของค่าเริ่มต้นพารามิเตอร์ที่สอดคล้องกันสามารถละเว้นได้เมื่อเรียกวิธีการ
การเร่งความเร็วโมฆะสาธารณะ (การเพิ่มขึ้น int = 1)
-
_Speed += เพิ่มขึ้น;
-
การชะลอตัวของโมฆะสาธารณะ (การลดลงของ int = 1)
-
_Speed -= ปฏิเสธ;
-
// คุณสมบัติสามารถเข้าถึงและตั้งค่า เมื่อต้องเข้าถึงข้อมูลเท่านั้นลองใช้คุณสมบัติ แอตทริบิวต์สามารถกำหนด Get and Set หรือทั้งสองอย่าง
บูลส่วนตัว _hastassles;
Public Bool Hastassles // Public Accessor
-
รับ {return _hastassles;}
ตั้งค่า {_hastassles = ค่า;}
-
// คุณสามารถกำหนดคุณสมบัติอัตโนมัติภายในหนึ่งบรรทัดและไวยากรณ์นี้จะสร้างฟิลด์ทางเลือกโดยอัตโนมัติ คุณสามารถตั้งค่าตัวดัดแปลงการเข้าถึงสำหรับ getters หรือ setters เพื่อ จำกัด การเข้าถึงของพวกเขา
Public Bool isbroken {get;
// การใช้งานแอตทริบิวต์สามารถเป็นไปโดยอัตโนมัติ
Frameize สาธารณะ
-
รับ;
// คุณสามารถระบุตัวดัดแปลงการเข้าถึงสำหรับ GET หรือ SET
// รหัสต่อไปนี้หมายความว่าเฉพาะคลาสจักรยานเท่านั้นที่สามารถเรียกชุดเฟรม
ชุดส่วนตัว;
-
// วิธีการแสดงคุณสมบัติวัตถุ
ข้อมูลสตริงเสมือนจริงสาธารณะ ()
-
กลับ "เกียร์:" + เกียร์ +
"จังหวะ:" + จังหวะ +
"ความเร็ว:" + _speed +
"ชื่อ:" + ชื่อ +
"การ์ดในซี่:" + (_hascardsinspokes? "ใช่": "ไม่") +
"/n ------------------------------/n"
-
// วิธีการสามารถคงที่ มักจะใช้ในวิธีเสริม
Public Static Bool DIDWECREATEENOUGHBYCLES ()
-
// ในวิธีการคงที่คุณสามารถอ้างถึงสมาชิกคงที่ของชั้นเรียนได้เท่านั้น
ส่งคืนจักรยาน> 9000;
} // หากชั้นเรียนของคุณต้องการสมาชิกแบบคงที่ให้พิจารณาการเรียนทั้งชั้นเรียนเป็นชั้นเรียนแบบคงที่
} // คลาสจักรยานสิ้นสุดลง
// pennyfarthing เป็นคลาสย่อยของจักรยาน
คลาส Pennyfarthing: จักรยาน
-
// (Penny Farthings เป็นจักรยานที่มีล้อหน้าขนาดใหญ่ไม่มีเกียร์)
// เรียกตัวสร้างแม่
pennyfarthing สาธารณะ (int startCadence, int startSpeed):
ฐาน (StartCadence, StartSpeed, 0, "Pennyfarthing", True, Bikebrand.electra)
-
-
ได้รับการปกป้องแทนที่เกียร์ int
-
รับ
-
กลับ 0;
-
ชุด
-
โยนอาร์กิวเมนต์ใหม่ ("คุณไม่สามารถเปลี่ยนเกียร์บน pennyfarthing");
-
-
ข้อมูลสตริงแทนที่สาธารณะ ()
-
สตริงผลลัพธ์ = "จักรยาน pennyfarthing";
ผลลัพธ์ += base.toString ();
ผลการกลับมา;
-
-
// อินเทอร์เฟซมีลายเซ็นของสมาชิกเท่านั้นและไม่ได้ใช้งาน
อินเทอร์เฟซ ijumpable
-
โมฆะกระโดด (int meters);
-
อินเทอร์เฟซ ibreakable
-
Bool Broken {get;} // อินเทอร์เฟซสามารถมีคุณสมบัติวิธีการและเหตุการณ์
-
// คลาสสามารถสืบทอดคลาสหนึ่งคลาสเท่านั้น แต่สามารถใช้อินเทอร์เฟซจำนวนเท่าใดก็ได้
Mountainbike Class: Bicycle, ijumpable, ibreakable
-
ความเสียหาย int = 0;
การกระโดดโมฆะสาธารณะ (int meters)
-
ความเสียหาย += เมตร;
-
บูลสาธารณะเสีย
-
รับ
-
คืนความเสียหาย> 100;
-
-
-
/// <summary>
/// เชื่อมต่อกับฐานข้อมูลตัวอย่างของ linqtosql EntityFramework Code First นั้นยอดเยี่ยม (คล้ายกับ Activerecord ของ Ruby แต่เป็นสองทาง)
/// http://msdn.microsoft.com/en-us/data/jj193542.aspx
/// </summary>
นักขี่จักรยานระดับสาธารณะ: DBSET
-
นักขี่จักรยานสาธารณะ ()
: ฐาน()
-
-
Public Dbset <Bicycle> Bikes {Get;
-
} // สิ้นสุดเนมสเปซ
โปรดทราบว่าหัวข้อที่ไม่ครอบคลุมคือ:
1. ฟลาย
2.attributes
3. คุณสมบัติคงที่
4. การรับรู้บทคัดย่อ
6.asp.net (เว็บฟอร์ม/MVC/WebMatrix)
6. Winforms
7. Windows Presentation Foundation (WPF)