Salinan kode adalah sebagai berikut:
// Komentar satu baris dimulai dengan //
/*
Beginilah komentar multi-line
*/
/// <summary>
/// komentar dokumen xml
/// </summary>
// Nyatakan namespace yang digunakan oleh aplikasi
menggunakan sistem;
menggunakan system.collections.generic;
menggunakan system.data.entity;
menggunakan System.dynamic;
menggunakan System.linq;
menggunakan System.linq.Expressions;
menggunakan System.net;
menggunakan System.threading.Tasks;
menggunakan system.io;
// Tentukan ruang lingkup dan atur kode menjadi paket
Pembelajaran Namespace
{
// Setiap file .cs perlu berisi setidaknya satu kelas dengan nama file yang sama
// Anda mungkin tidak melakukan ini, tetapi ini tidak baik.
Kelas Publik Learncsharp
{
// Jika Anda telah menggunakan java atau c ++ sebelumnya, Anda dapat melompat langsung ke teks berikut "fitur menarik"
public static void sintaks ()
{
// Gunakan Console.WriteLine untuk mencetak informasi
Console.WriteLine ("Hello World");
Console.WriteLine (
"Integer:" + 10 +
"Ganda:" + 3.14 +
"Boolean:" + true);
// Cetak dengan Console.write tanpa simbol istirahat garis
Console.write ("Hello");
Console.write ("dunia");
////////////////////////////////////////////////// /
// Jenis dan Variabel
//
// Gunakan <ype> <name> untuk mendefinisikan variabel
////////////////////////////////////////////////// /
// sbyte - integer 8 -bit ditandatangani
// (-128 <= sbyte <= 127)
Sbyte foosbyte = 100;
// byte - integer 8 -bit unsigned
// (0 <= byte <= 255)
byte foobyte = 100;
// pendek - bilangan bulat 16 -bit
// ditandatangani - (-32.768 <= pendek <= 32.767)
// Unsigned - (0 <= Ushort <= 65.535)
fooshort pendek = 10000;
Ushort fooushort = 10000;
// Integer - integer 32 -bit
int fooint = 1; // (-2.147.483.648 <= int <= 2.147.483.647)
uint foouint = 1; // (0 <= uint <= 4.294.967.295)
// panjang - bilangan bulat 64 -bit
long foolong = 100000L;
Ulong Fooulong = 10000L;
// angka default ke int atau uint (tergantung pada ukurannya)
// Gunakan l untuk menunjukkan tipe nilai variabel selama atau ulong
// ganda - Double 64 -bit IEEE 754 Nomor Titik Mengambang
Double Foodouble = 123.4; // Akurasi: 15-16 bit
// float - nomor satu presisi 32 -bit IEEE 754 Nomor Floating Point
float foofloat = 234.5f; // akurasi: 7 bit
// Gunakan f untuk menunjukkan tipe nilai variabel adalah float
// desimal - tipe data 128 -bit, dengan akurasi lebih tinggi dari tipe titik mengambang lainnya, cocok untuk keuangan dan keuangan
foodecimal desimal = 150,3m;
// Nilai Boolean - Benar & Salah
bool fooboolean = true; atau false
// char - karakter unicode 16 -bit tunggal
char foochar = 'a';
// string - Tidak seperti tipe dasar sebelumnya, string bukan nilai, tetapi referensi. Ini berarti Anda dapat mengatur string ke nol.
String foostring = " /" Escape /"Quotes and Add /n (baris baru) dan /t (tab)";
Console.WriteLine (foostring);
// Anda dapat mengakses setiap karakter string melalui indeks:
charfromString = foostring [1]; // => 'e'
// String tidak dapat dimodifikasi: foostring [1] = 'x' tidak berfungsi.
// Bandingkan string sesuai dengan pengaturan lokal saat ini, case tidak sensitif
string.compare (foostring, "x", stringcomparison.currentculturegnorecase);
// format string berdasarkan sprintf
String foofs = string.Format ("Periksa Periksa, {0} {1}, {0} {1: 0.0}", 1, 2);
// tanggal dan format
Datetime foodate = DateTime.now;
Console.writeLine (foodate.tostring ("hh: mm, dd mmm yyyy"));
// Gunakan simbol @ untuk membuat string melintasi baris. Gunakan "" untuk mewakili "
string bazstring = @"Ini beberapa barang
Di baris baru! "" Wow! "", Massa menangis ";
// Gunakan const atau read-only untuk mendefinisikan konstanta, dan konstanta dihitung selama kompilasi
const int hour_i_work_per_week = 9001;
////////////////////////////////////////////////// /
// Struktur Data
////////////////////////////////////////////////// /
// Array - Penghitungan dimulai dari 0. Saat mendeklarasikan array, Anda perlu menentukan panjang array.
// Format mendeklarasikan array adalah sebagai berikut:
// <dheratype> [] <var name> = new <dheratype> [<array size>];
int [] intarray = new int [10];
// Cara lain untuk mendeklarasikan dan menginisialisasi array:
int [] y = {9000, 1000, 1337};
// akses elemen array
Console.writeLine ("intarray @ 0:" + intarray [0]);
// array dapat dimodifikasi
intarray [1] = 1;
// Daftar
// Daftar lebih umum digunakan daripada array karena daftar lebih fleksibel.
// Format daftar deklarasi adalah sebagai berikut:
// Daftar <DataType> <var name> = Daftar baru <Datatype> ();
Daftar <TT> intlist = Daftar baru <TTT> ();
Daftar <String> stringList = Daftar baru <String> ();
Daftar <TT> Z = Daftar Baru <TTT> {9000, 1000, 1337};
// <> untuk obat generik - lihat yang berikut ini
// Tidak ada nilai default untuk daftar.
intlist.add (1);
Console.writeLine ("intlist @ 0:" + intlist [0]);
// Struktur Data Lainnya:
// Tumpukan/Antrian
// kamus (implementasi tabel hash)
// koleksi hash
// koleksi baca saja
// tuple (.net 4+)
Penggerengan////////////////////////////
// operator
Penggerengan////////////////////////////
Console.writeLine ("/n-> operator");
int I1 = 1, I2 = 2; // Singkatan dari beberapa deklarasi
// Aritmatika langsung
Console.WriteLine (I1 + I2 - I1 * 3/7);
// Ambil sisanya
Console.WriteLine ("11%3 =" + (11%3));
// Bandingkan operator
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));
// Operator Bit
/*
~ Terbalik
<< Pindah ke kiri (ditandatangani)
>> Pindah ke kanan (ditandatangani)
& Dan
^ bitwise xor
| atau
*/
// Penangkapan diri, penipu diri
int i = 0;
Console.writeLine ("/n-> inc/dec-rementation");
Console.WriteLine (I ++);
Console.WriteLine (++ I);
Console.WriteLine (i--);
Console.writeLine (-i);
Penggerengan////////////////////////////
// Struktur kontrol
Penggerengan////////////////////////////
Console.WriteLine ("/n-> Struktur Kontrol");
// jika pernyataan mirip dengan c
int j = 10;
if (j == 10)
{
Console.WriteLine ("I Get Printed");
}
lain jika (j> 10)
{
Console.WriteLine ("I Don't");
}
kalau tidak
{
Console.WriteLine ("Saya juga tidak");
}
// ekspresi tripartit
// Pernyataan If/Lainnya dapat ditulis sebagai:
// <dondice>?
string isTrue = (true) "true": "false";
// Saat loop
int foowhile = 0;
Sementara (foowhile <100)
{
// iterasi 100 kali, foowhile 0-> 99
foowhile ++;
}
// lakukan saat loop
int foodowhile = 0;
Mengerjakan
{
// iterasi 100 kali, foodowhile 0-> 99
foodowhile ++;
} while (foodowhile <100);
// untuk loop
// untuk struktur loop => untuk (<Kondisi Awal>; <kondis>; <peT>)
untuk (int foofor = 0; foofor <10; foofor ++)
{
// iterasi 10 kali, foofor 0-> 9
}
// loop foreach
// foreach loop struktur => foreach (<iter type> <terer> di <senumerable struktur>)
// Loop foreach cocok untuk objek apa pun yang mengimplementasikan ienumerable atau ienumerable.
// Jenis Koleksi (Array, Daftar, Kamus ...) Di bawah .NET Framework semuanya mengimplementasikan antarmuka ini.
// Dalam kode berikut, TocharArray () dapat dihapus karena string juga mengimplementasikan Ienumerable.
foreach (karakter char di "hello world" .tochararray ())
{
// iterate melalui semua karakter dalam string
}
// Pernyataan beralih
// Switch cocok untuk tipe data byte, pendek, char dan int.
// Juga berlaku untuk tipe yang dapat ditaklukkan, termasuk kelas string,
// dan beberapa kelas yang merangkum nilai asli: karakter, byte, pendek, dan bilangan bulat.
Bulan int = 3;
string bulan;
Switch (bulan)
{
Kasus 1:
BULANTRING = "Januari";
merusak;
Kasus 2:
BULANTRING = "Februari";
merusak;
Kasus 3:
BULANTRING = "March";
merusak;
// Anda dapat mencocokkan beberapa pernyataan kasus sekaligus
// tetapi Anda perlu menggunakan istirahat setelah menambahkan pernyataan kasus
// (jika tidak, Anda perlu secara eksplisit menggunakan pernyataan GOTO Case X)
Kasus 6:
Kasus 7:
Kasus 8:
BULANTRING = "Waktu Musim Panas !!";
merusak;
bawaan:
bulan -bulan = "beberapa bulan lainnya";
merusak;
}
Penggerengan////////////////////////////
// Konversi string ke integer, dan pengecualian akan dilemparkan jika konversi gagal:
Penggerengan////////////////////////////
// Mengonversi data
// Konversi string ke integer, dan pengecualian akan dilemparkan jika konversi gagal:
int.parse ("123"); // return "123" dari tipe integer
// tryparse akan mencoba mengonversi jenis, dan jika gagal, itu akan mengembalikan tipe default, seperti 0
int tryint;
if (int.tryparse ("123", out tryint)) // funciton is boolean
Console.WriteLine (tryint);
// Konversi bilangan bulat menjadi string
// Convert Class menyediakan serangkaian metode konversi yang nyaman
Convert.tostring (123);
// atau
tryint.tostring ();
}
Penggerengan////////////////////////////
// baik
Penggerengan////////////////////////////
Kelas Void Statis Publik ()
{
// Lihat deklarasi objek di akhir file
// inisialisasi objek dengan yang baru
Bicycle Trek = Bicycle baru ();
// Panggil metode objek
Trek.speedup (3);
trek.cadence = 100;
// Lihat informasi objek.
Console.writeLine ("Info Trek:" + trek.info ());
// instantiate sen baru kentut
Pennyfaching funbike = Pennyfaching baru (1, 10);
Console.WriteLine ("Info Funbike:" + funbike.info ());
Console.read ();
} // Akhiri metode utama
// Program Terminal Program Terminal harus memiliki metode utama sebagai entri
public static void main (string [] args)
{
OtherInterestingFeatures ();
}
//
// fitur yang menarik
//
// tanda tangan metode default
Publik // Visibilitas
static // memungkinkan panggilan langsung ke kelas tanpa membuat instance terlebih dahulu
int // nilai pengembalian
Metode Metode (
int maxcount, // variabel pertama, tipe adalah integer
Int Count = 0, // Jika tidak ada nilai masuk yang diteruskan, nilai default adalah 0
int lain = 3,
Params String [] OtherParams // menangkap parameter lain
)
{
kembali -1;
}
// Metode ini dapat diubah namanya selama tanda tangannya berbeda
Public static void Methodygnature (String MaxCount)
{
}
// generik
// Kelas TKey dan TValue ditentukan saat memanggil fungsi dengan pengguna.
// Fungsi berikut mensimulasikan setDefault Python
Public static tvalue setDefault <tkey, tvalue> (
IDICTIONY <TKey, TVALUE> KAMUS,
Kunci tkey,
Tvalue defaultitem)
{
Hasil tvalue;
if (! Dictionary.trygetValue (Key, Out Hasil)))
Kamus Return [Key] = defaultItem;
hasil pengembalian;
}
// Anda dapat membatasi kisaran nilai yang masuk
public static void iterate dan crint <T> (t TopRint) di mana t: ienumerable <Int>
{
// kita bisa beralih karena t bisa dihiasi
foreach (item var di toprint)
// ITTM adalah bilangan bulat
Console.writeLine (item.toString ());
}
public static void OtherInterestingFeatures ()
{
// Parameter opsional
MethodyIchature (3, 1, 3, "beberapa", "ekstra", "string");
MethodyIchatures (3, lain: 3); // Tentukan parameter secara eksplisit, abaikan parameter opsional
// Perpanjang metode
int i = 3;
i.print (); // Lihat definisi di bawah ini
// dapat berupa tipe nol sangat berguna untuk interaksi database dan nilai pengembalian.
// Jenis nilai apa pun (yaitu bukan kelas) akan ditambahkan ke tipe nullable setelah menambahkan akhiran?
// <type>?
int?
Console.writeLine ("variabel nullable:" + nullable);
bool hasvalue = nullable.hasvalue;
// ?? apakah gula sintaksis digunakan untuk menentukan nilai default
// Jika variabelnya nol
int notnullable = nullable ??
// Inferensi Jenis Variabel
// Anda dapat membiarkan jenis variabel kompiler infer:
var magic = "Magic adalah string, pada waktu kompilasi, jadi Anda masih mendapatkan jenis keamanan";
// sihir = 9; // tidak berfungsi karena sihir adalah string, bukan bilangan bulat.
// generik
//
Var Telepon Buku = Kamus Baru <String, String> () {
{"Sarah", "212 555 5555"} // Tambahkan entri baru ke buku telepon
};
// Hubungi setDefault yang didefinisikan di atas sebagai generik
Console.WriteLine (setDefault <String, String> (Buku telepon, "Shaun", "No Phone"));
// Anda tidak perlu menentukan TKey atau TValue, karena mereka akan diturunkan secara implisit
Console.WriteLine (SetDefault (Buku telepon, "Sarah", "No Phone"));
// Ekspresi Lambda - Memungkinkan Anda untuk memecahkan fungsi dengan satu baris kode
Func <int, int> square = (x) => x * x;
Console.WriteLine (Square (3));
// Manajemen Sumber Daya yang Dapat ditinggalkan - Memungkinkan Anda untuk dengan mudah berurusan dengan sumber daya yang tidak dikelola. Sebagian besar objek yang mengakses sumber daya yang tidak dikelola (operator file, konteks perangkat, dll.) Menerapkan antarmuka idisposable.
// Pernyataan penggunaan akan membersihkan objek idisposable untuk Anda.
Menggunakan (streamwriter writer = streamwriter baru ("log.txt")))
{
writer.writeLine ("Tidak ada yang mencurigakan di sini");
// Di akhir ruang lingkup, sumber daya akan didaur ulang
// (bahkan jika pengecualian dilemparkan, itu masih akan didaur ulang)
}
// Kerangka Paralel
// http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx
var situs web = string baru [] {
"http://www.google.com", "http://www.reddit.com",
"http://www.shaunmccarthy.com"
};
var responses = kamus baru <string, string> ();
// Buka utas baru untuk setiap permintaan dan gabungkan hasilnya sebelum menjalankan langkah berikutnya
Paralel.foreach (situs web,
paraleloptions baru () {maxDegreeofparallism = 3}, // max dari 3 utas
situs web =>
{
// Lakukan sesuatu yang membutuhkan waktu lama pada file
menggunakan (var r = webrequest.create (URI baru (situs web)). getResponse ())
{
tanggapan [Situs web] = R.ContentType;
}
});
// Kode berikut tidak akan dijalankan sampai semua permintaan selesai
foreach (kunci var dalam responses.keys)
Console.writeLine ("{0}: {1}", key, responses [key]);
// Objek Dinamis (sangat nyaman untuk digunakan dengan bahasa lain)
Siswa Dinamis = ExpandoObject () baru;
Student.FirstName = "Nama Depan"; // Tidak perlu mendefinisikan kelas terlebih dahulu!
// Anda bahkan dapat menambahkan metode (menerima string, output string)
student.introduce = func baru <string, string> (
(pengantar) => string.format ("hey {0}, ini {1}", student.firstname, pengantar));
Console.WriteLine (Student.introduce ("Beth"));
// iQueryable <T> - Hampir semua koleksi mengimplementasikannya, memberi Anda pendekatan peta/filter/pengurangan gaya
Var Bikes = Daftar baru <Bicycle> ();
Bikes.sort ();
bikes.sort ((b1, b2) => b1.wheels.compareto (b2.wheels));
Hasil var = sepeda
.Where (b => b.wheels> 3) // filter - dapat digunakan dalam rantai (kembali ke iQueryable)
.Where (b => b.isbroken && b.hastasles)
.Select (b => b.tostring ());
var sum = bikes.sum (b => b.wheels);
// Buat daftar objek implisit yang dihasilkan berdasarkan beberapa parameter sepeda
var BikeSummary = bikes.select (b => baru {name = b.name, isAwesome =! b.isbroken && b.hastassles});
// Sulit untuk ditunjukkan, tetapi kompiler dapat menyimpulkan jenis objek di atas sebelum kode dikompilasi.
Foreach (Var Bikesummary in Bikesummary.where (b => b.isawesome))
Console.WriteLine (BikeSummary.Name);
// asparallel
// Karakteristik Jahat - Menggabungkan Operasi Linq dan Paralel
var threewheelers = bikes.asparallel (). where (b => b.wheels == 3). select (b => b.name);
// Kode di atas akan berjalan secara bersamaan. Utas akan dibuka secara otomatis dan hasilnya akan dihitung secara terpisah. Cocok untuk skenario multi-core dan data besar.
// LINQ - Peta iQueryable <T> ke penyimpanan, penundaan eksekusi, seperti database pemetaan LinqTosql, Dokumen Pemetaan XML LinqToxML.
var db = bikerespository baru ();
// Eksekusi tertunda, yang baik untuk meminta database
var filter = db.bikes.where (b => b.hastassles);
Jika (42> 6) // Anda dapat terus meningkatkan pemfilteran, termasuk penyaringan bersyarat, misalnya untuk fitur pencarian lanjutan
filter = filter.where (b => b.isbroken); // Jangan jalankan kueri
var kueri = filter
.Orderby (b => b.wheels)
.Thenby (b => b.name)
.Select (b => b.name); // kueri masih belum berjalan
// Sekarang jalankan kueri, dan pembaca akan dibuka saat menjalankan kueri, jadi Anda beralih di atas salinannya
foreach (sepeda string in query)
Console.WriteLine (Hasil);
}
} // end learncsharp kelas
// Anda dapat memasukkan kelas lain dalam file .cs yang sama
ekstensi kelas statis publik
{
// fungsi yang diperluas
cetak public static void (objek ini obj)
{
Console.writeLine (obj.tostring ());
}
}
// Nyatakan sintaks kelas:
// <Public/Private/Protected/Internal> Class <Class Name> {
// // bidang data, konstruktor, fungsi internal.
/// Di Java, fungsi disebut metode.
//}
Sepeda kelas publik
{
// bidang dan variabel sepeda
Publik int Cadence // Publik: dapat diakses di mana saja
{
dapatkan // dapatkan - tentukan metode untuk mendapatkan atribut
{
mengembalikan _cadence;
}
Set // Set - Tentukan metode untuk mengatur properti
{
_cadence = nilai; // nilai adalah nilai yang diteruskan ke setter
}
}
Private Int _cadence;
Kelas dan subkelas virtual yang dilindungi dapat diakses
{
Dapatkan; // Buat properti otomatis tanpa bidang anggota
mengatur;
}
Internal Int Wheels // Internal: Dapat diakses dalam perakitan yang sama
{
mendapatkan;
Set pribadi; // Anda dapat menambahkan pengubah ke metode Get/Set
}
int _speed; // default bersifat pribadi: itu hanya dapat diakses dalam kelas ini, Anda juga dapat menggunakan kata kunci `private`
nama string publik {get;
// Jenis enum berisi satu set konstanta yang memetakan nama ke nilai (kecuali ditentukan lain, bilangan bulat).
// Jenis elemen enmu bisa byte, sbyte, pendek, ushort, int, uint, long, ulong. Enum tidak dapat berisi nilai yang sama.
Bikebrand Enum Publik
{
Aist,
BMC,
Electra = 42, // Anda dapat secara eksplisit menetapkan nilai
Gitane // 43
}
// Jenis ini yang kita definisikan di kelas sepeda, jadi ini adalah tipe inline. Kode di luar kelas ini harus direferensikan menggunakan sepeda. Brand.
Merek Bikebrand Publik;
// Metode statis
// Jenis metode statis itu sendiri dan bukan milik objek tertentu. Anda dapat mengaksesnya tanpa merujuk objek.
sepeda int statis Int Bicyclescreated = 0;
// nilai baca saja
// Nilai hanya baca ditentukan saat runtime dan mereka hanya dapat diberi nilai dalam deklarasi atau konstruktor.
readonly bool _hascardsinspokes = false; // read-only private
// Konstruktor adalah cara untuk membuat kelas.
// Di bawah ini adalah konstruktor default.
sepeda publik ()
{
this.gear = 1; // Anda dapat menggunakan kata kunci ini untuk mengakses anggota objek
Cadence = 50; tetapi Anda tidak selalu membutuhkannya
_speed = 5;
Name = "bontrager";
Brand = bikebrand.aist;
Bicyclescreated ++;
}
// Contoh konstruktor lainnya (termasuk parameter)
Sepeda publik (int startcadence, int startspeed, int startgear,
nama string, bool hascardsinspokes, merek bikebrand)
: base () // basis panggilan pertama
{
Gear = startgear;
Cadence = StartCadence;
_speed = StartSpeed;
Name = name;
_hascardsinspokes = hascardsinspokes;
Merek = merek;
}
// Konstruktor dapat digunakan dalam rantai
Sepeda publik (int startcadence, int startspeed, merek bikebrand):
ini (startcadence, startspeed, 0, "Big Wheels", True, Brand)
{
}
// sintaks fungsi:
// <public/private/protected> <value return> <function name> (<parameter>)
// Kelas dapat mengimplementasikan metode getters dan setter untuk bidangnya untuk bidang, atau mereka dapat mengimplementasikan properti (C# disarankan untuk menggunakan ini).
// Parameter metode dapat memiliki nilai default. Dalam kasus nilai default, parameter yang sesuai dapat dihilangkan saat memanggil metode.
Public void Speedup (Int Increment = 1)
{
_speed += kenaikan;
}
Slowdown public void (Int Decrement = 1)
{
_speed -= penurunan;
}
// Properti dapat mengakses dan mengatur nilai. Ketika hanya data yang perlu diakses, pertimbangkan untuk menggunakan properti. Atribut dapat mendefinisikan Get and Set, atau keduanya.
Private Bool _Hastassles; // Variabel Pribadi
Publik Bool Hastassles // Public Accessor
{
dapatkan {return _hastassles;}
set {_hastassles = nilai;
}
// Anda dapat mendefinisikan properti otomatis dalam satu baris, dan sintaks ini akan secara otomatis membuat bidang fallback. Anda dapat mengatur pengubah akses untuk getters atau setter untuk membatasi akses mereka.
Public Bool Isbroken {get;
// Implementasi atribut bisa otomatis
bingkai int publik
{
mendapatkan;
// Anda dapat menentukan pengubah akses untuk mendapatkan atau mengatur
// Kode berikut berarti bahwa hanya kelas sepeda yang dapat menghubungi set bingkai
set pribadi;
}
// metode untuk menampilkan properti objek
Info String Virtual Publik ()
{
return "gear:" + gear +
"Cadence:" + Cadence +
"Kecepatan:" + _speed +
"Nama:" + Nama +
"Kartu di Spoke:" + (_hascardsinspokes? "Ya": "Tidak") +
"/n -----------------------------/n"
}
// Metode ini bisa statis. Biasanya digunakan dalam metode tambahan.
public static bool didwecreateenoughbycles ()
{
// Dalam metode statis, Anda hanya dapat merujuk pada anggota statis kelas
pengembalian sepeda yang dibuat> 9000;
} // Jika kelas Anda hanya membutuhkan anggota statis, pertimbangkan untuk mengambil seluruh kelas sebagai kelas statis.
} // kelas sepeda berakhir
// Pennyfaching adalah subclass sepeda
Kelas Pennyfarthing: Sepeda
{
// (Penny Farthings adalah sepeda dengan roda depan yang besar. Tidak ada persneling.)
// hubungi konstruktor induk
Pennyfaching Publik (int startcadence, int startspeed):
basis (startcadence, startspeed, 0, "Pennyfaching", true, bikebrand.electra)
{
}
gear intride intride yang dilindungi
{
mendapatkan
{
kembali 0;
}
mengatur
{
Lempar ArgumentException baru ("Anda tidak dapat mengganti persneling pada Pennyfaching");
}
}
Info String Override Publik ()
{
Hasil string = "Pennyfaching Bicycle";
Hasil += base.toString ();
hasil pengembalian;
}
}
// Antarmuka hanya berisi tanda tangan anggota, dan tidak diimplementasikan.
antarmuka ijumpable
{
void jump (int meter); // Semua anggota antarmuka secara implisit terpapar
}
antarmuka ibreakable
{
bool rusak {get;} // antarmuka dapat berisi properti, metode dan acara
}
// Kelas hanya dapat mewarisi satu kelas, tetapi mereka dapat mengimplementasikan sejumlah antarmuka
Kelas Mountainbike: Sepeda, Ijumpable, Ibreakable
{
int kerusakan = 0;
lompatan public void (int meter)
{
kerusakan += meter;
}
Bool publik rusak
{
mendapatkan
{
Kembalikan kerusakan> 100;
}
}
}
/// <summary>
/// Sambungkan ke database, contoh linqtosql. EntityFramework Code First sangat bagus (mirip dengan Ruby's Activerecord, tapi dua arah)
/// http://msdn.microsoft.com/en-us/data/jj193542.aspx
/// </summary>
Bikerespository kelas publik: DBSET
{
bikerespository publik ()
: basis()
{
}
Public DBSET <Poles Bicycle> {get;
}
} // end namespace
Perhatikan bahwa topik yang tidak dicakup adalah:
1.Flags
2.Tribut
3. Sifat statis
4. Kecuali, abstrak
6.asp.net (Formulir Web/MVC/WebMatrix)
6. WinForms
7. Windows Presentation Foundation (WPF)