코드 사본은 다음과 같습니다.
// 단일 줄 주석은 //
/*
이것은 멀티 라인 댓글의 방식입니다
*/
/// <요약>
/// 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 +
"부울 :" + true);
// console.s로 인쇄합니다. 줄이없는 기호없이 write
console.write ( "Hello");
console.write ( "World");
//////////////////////////////////////////////////////////////////////////////////4 /
// 유형 및 변수
//
// 변수를 정의하려면 <type> <name>을 사용합니다
//////////////////////////////////////////////////////////////////////////////////4 /
// SBYTE- 서명 8 비트 정수
// (-128 <= sbyte <= 127)
SBYTE FOOSBYTE = 100;
// 바이트 - 서명되지 않은 8 비트 정수
// (0 <= 바이트 <= 255)
바이트 foobyte = 100;
// 짧은 -16 비트 정수
// 서명 - (-32,768 <= 짧은 <= 32,767)
// 부호없는 - (0 <= ushort <= 65,535)
짧은 fooshort = 10000;
Ushort fooushort = 10000;
// 정수 -32 비트 정수
int fooint = 1; // (-2,147,483,648 <= int <= 2,147,483,647)
uint foouint = 1; // (0 <= uint <= 4,294,967,295)
// 긴 -64 비트 정수
LONG FOODONG = 100000L;
ulong fooulong = 10000L;
// 숫자는 int 또는 uint로 기본값 (크기에 따라 다름)
// L을 사용하여 가변 값 유형을 길거나 ulong으로 표시합니다.
// 더블 -Double 64 비트 IEEE 754 플로팅 포인트 번호
이중 Foodouble = 123.4; // 정확도 : 15-16 비트
// 플로트 - 단일 정밀 32 비트 IEEE 754 플로팅 포인트 번호
float foofloat = 234.5f; // 정확도 : 7 비트
// 가변 값 유형이 float임을 나타 내기 위해 f를 사용합니다.
// 10 진수 -128 비트 데이터 유형, 다른 부동 소수점 유형보다 정확도가 높고 금융 및 재무에 적합합니다.
십진 식품 = 150.3m;
// 부울 값 - true & false
bool fooboolean = true;
// char- 단일 16 비트 유니 코드 문자
char foochar = 'a';
// 문자열 - 이전 기본 유형과 달리 문자열은 값이 아니라 참조입니다. 이것은 문자열을 null로 설정할 수 있음을 의미합니다.
String foostring = " /"Escape /"Quotes and Add /n (새 선) 및 /t (탭)";
Console.WriteLine (FOOSTRING);
// 색인을 통해 문자열의 각 문자에 액세스 할 수 있습니다.
char charfromstring = foostring [1];
// 문자열을 수정할 수 없습니다 : foostring [1] = 'x'는 작동하지 않습니다.
// 현재 로케일 설정에 따라 문자열 비교, 케이스 insensitive
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 homs_i_work_per_week = 9001;
//////////////////////////////////////////////////////////////////////////////////4 /
// 데이터 구조
//////////////////////////////////////////////////////////////////////////////////4 /
// 배열 - 카운팅은 0부터 시작됩니다. 배열을 선언 할 때 배열 길이를 결정해야합니다.
// 배열 선언 형식은 다음과 같습니다.
// <datatype> [] <var name> = new <datatype> [<array size>];
int [] intarray = new int [10];
// 배열을 선언하고 초기화하는 다른 방법 :
int [] y = {9000, 1000, 1337};
// 배열의 요소에 액세스하십시오
console.writeLine ( "intarray @ 0 :" + intarray [0]);
// 배열을 수정할 수 있습니다
intarray [1] = 1;
// 목록
// 목록은 더 유연하기 때문에 목록은 배열보다 일반적으로 사용됩니다.
// 선언 목록의 형식은 다음과 같습니다.
// 목록 <DataType> <var name> = 새 목록 <DataType> ();
List <int> intlist = 새 목록 <int> ();
List <string> StringList = 새 목록 <string> ();
List <int> z = 새 목록 <int> {9000, 1000, 1337};
// <> 제네릭의 경우 - 다음을 참조하십시오
// 목록에 대한 기본값이 없습니다. 먼저 요소를 추가해야합니다.
intlist.add (1);
console.writeLine ( "intlist @ 0 :" + intlist [0]);
// 기타 데이터 구조 :
// 스택/큐
// 사전 (해시 테이블 구현)
// 해시 수집
// 읽기 전용 수집
// 튜플 (.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 ++); // i = 1
Console.writeLine (++ i); // i = 2
Console.writeLine (i-); // i = 1
Console.writeLine (-I); // i = 0
/////////////////////////////////////
// 제어 구조
/////////////////////////////////////
Console.WriteLine ( "/n-> 제어 구조");
// c와 유사한 진술 if
int j = 10;
if (j == 10)
{
Console.WriteLine ( "I GET GET GET get afect");
}
else if (j> 10)
{
Console.writeLine ( "I Do n't");
}
또 다른
{
Console.writeLine ( "I Do not");
}
// 트리 파트 라이트 표현
// 간단한 if/else 문은 다음과 같이 쓸 수 있습니다.
// <sondition>? <true> : <cound>
String istrue = (true) : "false";
// while loop
int foowhile = 0;
while (foowhile <100)
{
// 반복은 100 번, FoOwhile 0-> 99
foowhile ++;
}
// 루프 중에 수행합니다
int foodowhile = 0;
하다
{
// 반복 100 번, Foodowhile 0-> 99
Foodowhile ++;
} while (foodowhile <100);
// 루프 용
// 루프 구조의 경우 => for (<초기 조건>; <sondition>; <step>)
for (int foofor = 0; Foofor <10; Foofor ++)
{
// 반복은 10 번, Foofor 0-> 9
}
// foreach loop
// foreach 루프 구조 => foreach (<iter type> <iter> in <enumerable stuction>)
// foreach 루프는 ienumerable 또는 ienumerable을 구현하는 모든 객체에 적합합니다.
// .NET 프레임 워크에서 수집 유형 (배열, 목록, 사전 ...)은 이러한 인터페이스를 모두 구현합니다.
// 다음 코드에서는 문자열이 ienumerable을 구현하므로 tochararray ()를 삭제할 수 있습니다.
foreach ( "hello world"의 숯 문자.
{
// 문자열의 모든 문자를 반복합니다
}
// switch 문
// 스위치는 바이트, 짧은, Char 및 int 데이터 유형에 적합합니다.
// 문자열 클래스를 포함하여 열거 가능한 유형에도 적용 가능합니다.
// 원본 값을 캡슐화하는 일부 클래스 : 문자, 바이트, 짧은 및 정수.
int month = 3;
문자열 Monthstring;
스위치 (월)
{
case 1:
Monthstring = "1 월";
부서지다;
case 2:
Monthstring = "2 월";
부서지다;
사례 3 :
Monthstring = "March";
부서지다;
// 한 번에 여러 case 문을 일치시킬 수 있습니다
// CASE 문을 추가 한 후 Break를 사용해야합니다.
// (그렇지 않으면 GOTO CASE X 문을 명시 적으로 사용해야합니다)
사례 6 :
사례 7 : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : : 사례 7 : : 사례 7 : 사례 7 : 사례.
사례 8 :
Monthstring = "여름 시간 !!";
부서지다;
기본:
Monthstring = "일부 다른 달";
부서지다;
}
/////////////////////////////////////
// 문자열을 정수로 변환하면 변환이 실패하면 예외가 발생합니다.
/////////////////////////////////////
// 데이터 변환
// 문자열을 정수로 변환하면 변환이 실패하면 예외가 발생합니다.
int.parse ( "123"); // 정수 유형의 "123"을 반환합니다
// tryparse는 유형을 변환하려고 시도하고 실패하면 0과 같은 기본 유형을 반환합니다.
int tryint;
if (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 = 새로운 페니 파트 (1, 10);
Console.writeLine ( "Funbike Info :" + funbike.info ());
Console.Read ();
} // 메인 메소드를 종료합니다
// 터미널 프로그램 터미널 프로그램은 항목으로 기본 메소드가 있어야합니다.
public static void main (String [] args)
{
기타 이네스트링 파이어스 ();
}
//
// 흥미로운 기능
//
// 기본 메소드 서명
공개 // 가시성
static // 먼저 인스턴스를 만들지 않고 클래스를 직접 호출 할 수 있습니다.
int // return 값
MethodsInatures (
int maxcount, // 첫 번째 변수, 유형은 정수입니다.
int count = 0, // 들어오는 값이 전달되지 않으면 기본값은 0입니다.
int 또 다른 = 3,
Params String [] OtherParams // 다른 매개 변수를 캡처합니다
))
{
반품 -1;
}
// 서명이 다르면 메소드의 이름을 바꿀 수 있습니다.
공개 정적 무효 메소드 서명 (String MaxCount)
{
}
// 제네릭
// 사용자와 함께 함수를 호출 할 때 tkey 및 tvalue 클래스가 지정됩니다.
// 다음 함수는 Python의 setDefault를 시뮬레이션합니다
public static tvalue setdefault <tkey, tvalue> (
Idictionary <tkey, tvalue> 사전,
tkey 키,
tvalue defaultitem)
{
tvalue 결과;
if (! dictionary.rygetValue (키, 결과)))
반환 사전 [key] = defaultitem;
반환 결과;
}
// 들어오는 값의 범위를 제한 할 수 있습니다
public static void iterateandprint <t> (t toprint) 여기서 t : ienumerable <int>
{
// t가 열거 될 수 있으므로 반복 할 수 있습니다
foreach (toprint의 var 항목)
// ITTM은 정수입니다
console.writeline (item.toString ());
}
공개 정적 void 기타 interestingFeatures ()
{
// 선택적 매개 변수
MethodsInatures (3, 1, 3, "일부", "추가", "문자열");
MethodSignatures (3, 다른 : 3);
// 메소드를 확장합니다
int i = 3;
I.Print (); // 아래 정의를 참조하십시오
// null 유형 일 수 있습니다. 데이터베이스 상호 작용 및 반환 값에 매우 유용합니다.
// 접미사를 추가 한 후 모든 값 유형 (예 : 클래스가 아님)이 무효 유형에 추가됩니까?
// <type>? <변수 이름> = <value>
nullable = null;
console.writeLine ( "nullable 변수 :" + nullable);
bool hasvalue = nullable.hasValue;
// ?? 기본값을 지정하는 데 사용됩니다
// 변수가 null 인 경우
intnullable = nullable?
// 변수 유형 추론
// 컴파일러가 변수 유형을 추론 할 수 있습니다.
var magic = "Magic은 컴파일 시간에 문자열이므로 여전히 유형 안전을 얻습니다.";
// magic = 9; // magic은 정수가 아니라 문자열이기 때문에 작동하지 않습니다.
// 제네릭
//
var phonebook = new Dictionary <String, String> () {
{ "Sarah", "212 555 5555"} // 전화 번호부에 새 항목 추가
};
// 위에서 정의 된 setDefault 호출을 일반으로 정의합니다
console.writeLine (setDefault <String, String> (Phonebook, "Shaun", "No Phone"));
// tkey 또는 tvalue를 지정할 필요가 없습니다.
Console.WriteLine (SetDefault (PhoneBook, "Sarah", "No Phone"));
// 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 responses = new Dictionary <String, String> ();
// 각 요청마다 새 스레드를 열고 다음 단계를 실행하기 전에 결과를 병합합니다.
Parallel.Foreach (웹 사이트,
new Parallictions () {MaxDegreeofParallelism = 3}, // 최대 3 개의 스레드
웹 사이트 =>
{
// 파일에서 오랜 시간이 걸리는 일을합니다.
사용 (var r = webrequest.create (new uri (웹 사이트)). getResponse ())
{
응답 [웹 사이트] = R.ContentType;
}
});
// 모든 요청이 완료 될 때까지 다음 코드가 실행되지 않습니다.
foreach (var key in responses.keys)
console.writeline ( "{0} : {1}", 키, 응답 [키]);
// 동적 객체 (다른 언어와 함께 사용하는 것이 매우 편리합니다)
동적 학생 = 새로운 expandooBject ();
학생 .firstname = "이름"; // 클래스를 먼저 정의 할 필요가 없습니다!
// 메소드를 추가 할 수도 있습니다 (문자열 수락, 문자열 출력)
학생 .introading = new func <String, String> (
(소개) => string.format ( "Hey {0}, this is {1}", Student.FirstName, SocumesTo));
console.writeLine (whening.introctor ( "Beth"));
// iqueryable <t> - 거의 모든 컬렉션이 구현되어지도/필터/스타일 접근 방식을 줄입니다.
var 자전거 = 새로운 목록 <자전거> ();
bikes.sort (); // 배열을 정렬합니다
bikes.sort ((b1, b2) => b1.wheels.compareto (b2.wheels);
var result = 자전거
.Where (b => 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 => new {name = b.name, isawesome =! b.isbroken && b.hastassles});
// 시연하기는 어렵지만 컴파일러는 코드를 컴파일하기 전에 위의 객체 유형을 추론 할 수 있습니다.
foreach (바이킹 미스 마리의 Var Bikesummary.
Console.WriteLine (Bikesummary.name);
// asparAllel
// 사악한 특성 - LINQ와 병렬 작업을 결합합니다
var threewheelers = bikes.asparallel (). 여기서 (b => b.wheels == 3) .select (b => b.name);
// 위의 코드는 동시에 실행됩니다. 스레드가 자동으로 열리고 결과는 별도로 계산됩니다. 멀티 코어 및 대형 데이터 시나리오에 적합합니다.
// LINQ- MAP IQueryable <T>는 Storage, LinqToSQL 매핑 데이터베이스와 같은 실행 지연, LinqToxml XML 문서와 같은 실행을 지연시킵니다.
var db = 새로운 바이커 레스 포지티브 ();
// 실행이 지연되어 데이터베이스 쿼리에 좋습니다.
var filter = db.bikes.where (b => b.hastassles);
if (42> 6) // 조건부 필터링 (예 : 고급 검색 기능)을 포함하여 필터링을 지속적으로 늘릴 수 있습니다.
필터 = 필터
var query = 필터
.Orderby (b => B. wheels)
.thenby (b => B. 이름)
.select (b => b.name); // 쿼리가 여전히 실행되지 않습니다
// 이제 쿼리를 실행하면 쿼리를 실행할 때 리더가 열리므로 사본을 반복합니다.
foreach (문자열 자전거 쿼리)
Console.writeLine (결과);
}
} // END LEARNCSHARP 클래스
// 같은 .CS 파일에 다른 클래스를 포함시킬 수 있습니다.
공개 정적 클래스 확장
{
// 확장 된 함수
공개 정적 무효 인쇄 (이 개체 OBJ)
{
console.writeline (obj.tostring ());
}
}
// 클래스의 구문을 선언합니다.
// <public/private/protected/internal> class <class name> {
// // 데이터 필드, 생성자, 내부 기능.
/// Java에서는 기능을 메소드라고합니다.
//}
공개 수업 자전거
{
// 자전거 필드 및 변수
공개 int cadence // public : 어디서나 접근 가능
{
GET // GET- 속성을 얻는 메소드 정의
{
반환 _cadence;
}
설정 // 설정 - 속성을 설정하는 메소드 정의
{
_cadence = value; // 값은 세터에 전달됩니다
}
}
개인 int _cadence;
보호 된 가상 int 기어 // 클래스 및 서브 클래스에 액세스 할 수 있습니다.
{
get; // 회원 필드없이 자동 속성을 만듭니다
세트;
}
내부 INT 휠 // 내부 : 동일한 어셈블리 내에서 액세스 할 수 있습니다.
{
얻다;
개인 세트; // get/set 메소드에 수정자를 추가합니다
}
int _speed; // 기본값은 비공개입니다.
공개 문자열 이름 {get;
// 열거 유형에는 이름을 값에 매핑하는 상수 세트가 포함되어 있습니다 (달리 지정되지 않는 한 정수).
// enmu 요소의 유형은 바이트, sbyte, short, ushort, int, uint, long, ulong 일 수 있습니다. 열거는 동일한 값을 포함 할 수 없습니다.
공개 열거 자전거
{
aist,
BMC,
Electra = 42, // 값을 명시 적으로 할당 할 수 있습니다
Gitane // 43
}
// 자전거 클래스에서 정의하는이 유형이므로 인라인 유형입니다. 이 클래스 이외의 코드는 Bicycle.brand를 사용하여 참조해야합니다.
공개 자전거 브랜드 브랜드; // 열거 유형을 선언 한 후, 우리는이 유형의 필드를 선언 할 수 있습니다.
// 정적 메소드
// 정적 메소드의 유형은 그 자체이며 특정 객체에 속하지 않습니다. 객체를 참조하지 않고도 액세스 할 수 있습니다.
정적 공개 int bicyclescreated = 0;
// 읽기 전용 값
// 읽기 전용 값은 런타임에 결정되며 선언 또는 생성자 내에서만 할당 할 수 있습니다.
readonly bool _hascardsinspokes = false;
// 생성자는 클래스를 만드는 방법입니다.
// 아래는 기본 생성자입니다.
공개 자전거 ()
{
this.gear = 1; // 키워드를 사용하여 객체의 멤버에 액세스 할 수 있습니다.
Cadence = 50; // 그러나 항상 필요하지는 않습니다
_speed = 5;
이름 = "Bontrager";
브랜드 = Bikebrand.aist;
자전거 구조 ++;
}
// 생성자의 또 다른 예 (매개 변수 포함)
공개 자전거 (Int StartCadence, Int StartSpeed, int StartGear,
문자열 이름, bool hascardsinspokes, bikebrand 브랜드)
: base () // 첫 번째 콜베이스
{
기어 = 스타트 기어;
Cadence = startCadence;
_speed = startSpeed;
이름 = 이름;
_hascardsinspokes = hascardsinspokes;
브랜드 = 브랜드;
}
// 생성자는 체인에 사용할 수 있습니다
공개 자전거 (Int StartCadence, Int StartSpeed, BikeBrand 브랜드) :
이것 (StartCadence, StartSpeed, 0, "Big Wheels", True, Brand)
{
}
// 함수 구문 :
// <public/private/protected> <return value> <function name> (<parameter>)
// 클래스는 필드 필드에 대한 getters and setter 방법을 구현하거나 속성을 구현할 수 있습니다 (C#이 사용 권장).
// 메소드의 매개 변수는 기본값을 가질 수 있습니다. 기본값의 경우 메소드를 호출 할 때 해당 매개 변수를 생략 할 수 있습니다.
공개 무효 속도 (int icrement = 1)
{
_speed += 증분;
}
공개 무효 둔화 (int 감소 = 1)
{
_speed- = 쇠퇴;
}
// 속성은 값에 액세스하고 설정할 수 있습니다. 데이터에만 액세스 해야하는 경우 속성 사용을 고려하십시오. 속성은 GET 및 설정 또는 둘 다 정의 할 수 있습니다.
개인 bool _hastassles;
공개 부리 하스타 글 // 공개 액세서
{
{return _hastassles};
{_hastassles = value}
}
// 한 줄 내에서 자동 속성을 정의 할 수 있으며이 구문은 자동으로 폴백 필드를 생성합니다. 액세스를 제한하기 위해 Getters 또는 Setter에 대한 액세스 수정자를 설정할 수 있습니다.
공개 bool as {private set}
// 속성 구현은 자동 일 수 있습니다
공개 int 프레임즈
{
얻다;
// get 또는 set에 대한 액세스 수정자를 지정할 수 있습니다.
// 다음 코드는 자전거 클래스 만 프레임즈 세트를 호출 할 수 있음을 의미합니다.
개인 세트;
}
// 객체 속성을 표시하는 메소드
공개 가상 문자열 정보 ()
{
반환 "기어 :" + 기어 +
"케이던스 :" + Cadence +
"속도 :" + _speed +
"이름 :" + 이름 +
"스포크에있는 카드 :" + (_hascardsinspokes? "예": "아니오") +
"/n --------------------------------/N"
}
// 메소드가 정적 일 수 있습니다. 일반적으로 보조 방법으로 사용됩니다.
Public STATIC BOOL DIDWECREATEENOUGHBYCLES ()
{
// 정적 메소드에서는 클래스의 정적 멤버 만 참조 할 수 있습니다.
자전거를 반환> 9000;
} // 클래스에 정적 멤버 만 필요한 경우 전체 클래스를 정적 클래스로 고려하십시오.
} // 자전거 클래스가 끝납니다
// PennyFarthing은 자전거의 서브 클래스입니다
클래스 페니 파트 : 자전거
{
// (Penny Farthings는 큰 앞 바퀴가있는 자전거입니다. 기어가 없습니다.)
// 상위 생성자를 호출합니다
공개 pennyfarthing (int startCadence, int StartSpeed) :
Base (StartCadence, StartSpeed, 0, "PennyFarthing", True, Bikebrand.electra)
{
}
보호 된 int 기어를 재정의합니다
{
얻다
{
반환 0;
}
세트
{
새로운 ArgumentException을 던지십시오 ( "PennyFarthing에서 기어를 전환 할 수 없습니다");
}
}
공개 재정의 문자열 정보 ()
{
문자열 결과 = "PennyFarthing 자전거";
결과 += base.tostring ();
반환 결과;
}
}
// 인터페이스에는 멤버의 서명 만 포함되며 구현되지 않습니다.
인터페이스 ijumpable
{
void Jump (Int Meters); // 모든 인터페이스 멤버가 암시 적으로 노출됩니다
}
인터페이스 ibreakable
{
bool broken {get} // 인터페이스에는 속성, 메소드 및 이벤트가 포함될 수 있습니다.
}
// 클래스는 한 클래스 만 상속받을 수 있지만 여러 인터페이스를 구현할 수 있습니다.
Class Mountainbike : 자전거, ijumpable, iwreakable
{
int 손상 = 0;
공공 공간 점프 (Int Meters)
{
손상 += 미터;
}
공개 부 깨진
{
얻다
{
반환 손상> 100;
}
}
}
/// <요약>
/// LinqToSQL의 예인 데이터베이스에 연결합니다. EntityFramework Code First는 훌륭합니다 (Ruby의 ActiveRecord와 유사하지만 양방향입니다).
/// http://msdn.microsoft.com/en-us/data/jj193542.aspx
/// </summary>
공개 클래스 바이커 레스 포지티브 : DBSET
{
공개 바이커 레스 포지티브 ()
: base ()
{
}
공개 DBSET <자전거> 자전거 {get;
}
} // 엔드 네임 스페이스
다루지 않은 주제는 다음과 같습니다.
1. 플래그
2. 아트 리피
3. 정적 특성
4. 외상, 초록
6.asp.net (웹 양식/mvc/webmatrix)
6. Winforms
7. Windows Presentation Foundation (WPF)