C 샤프: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
TedBot (토론 | 기여)
잔글 봇: 틀 이름 및 스타일 정리
45번째 줄:
[[닷넷 프레임워크]]를 개발하던 시절 [[기본_클래스_라이브러리|클래스 라이브러리]]는 SMC(Simple Managed C)라 불리는 관리 코드(managed code)를 사용했었다.
<ref>
{{cite web인용
|url= http://blogs.msdn.com/jasonz/archive/2007/11/23/couple-of-historical-facts.aspx
|title= Couple of Historical Facts
64번째 줄:
기본 글꼴이나 브라우저의 기술적인 한계와 더불어 키보드에는 올림표 기호가 포함되지 않기에 ({{unichar|266F}}) 문서에서는 대체 기호로 [[해시 기호]]({{unichar|0023}})를 사용하며, ECMA-334 C# 언어 사양
<ref>
{{서적 인용
{{cite book
|url= http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
|title= C# Language Specification
115번째 줄:
| 2007년 11월
|
.NET Framework 2.0 (LINQ/쿼리 확장 제외)<ref name="danielmoth1">{{cite web인용|url=http://www.danielmoth.com/Blog/using-c-30-from-net-20.aspx |title=Using C# 3.0 from .NET 2.0 |publisher=Danielmoth.com |date=May 13, 2007 |accessdate=October 4, 2012}}</ref>
<br/>
.NET Framework 3.0 (LINQ/쿼리 확장 제외)<ref name="danielmoth1"/>
130번째 줄:
|-
| C# 5.0
| {{partial|진행 중}}<ref name="ecma_5">{{cite web인용|title=Mono and Roslyn|url=http://tirania.org/blog/archive/2014/Apr-09.html|website=Tirania Blog|publisher=Miguel de Icaza|accessdate=9 April 2014}}</ref>
| {{no|없음}}<ref group="note" name="no345"/>
| [https://www.microsoft.com/en-us/download/details.aspx?id=7029 2013년 6월]
175번째 줄:
</source>
</blockquote>
* 닷넷 플랫폼에서 포인터를 다루는 기본 단위는 <tt>System.IntPtr</tt>이다.
(<tt>System.UIntPtr</tt>은 특수한 목적으로 쓰이므로 설명에서 제외한다.)
* C#은 unsafe 블록 안에서 사용이 가능한 직접적인 포인터
285번째 줄:
* C#은 C/C++과 달리 [[전처리기]]의 사용이 제한적이다.
즉, C/C++에서 사용되던 [[include 가드|#include]]나 [[전처리기 지시어#헤더 포함|#pragma]]와 같은 지시자를 C#에서는 사용할 수 없으며,
C/C++에서 매크로 상수나 매크로 함수 등을 위해 사용되던 [[전처리기 지시어#매크로 정의와 확장|#define]]이 C#에서는 매우 제한적인 용도로 사용된다.
또한 C/C++에는 없던 [[#region]], [[#endregion]] 지시자가 새로 추가되었다.
예를 들면 다음과 같다.
<source lang="csharp">
311번째 줄:
#if CsDebug
this.debugmsg = value.Clone() as string;
#endif
}
}
318번째 줄:
</source>
* C#에서는 [[인라인 함수]]가 지원되지 않으며, [[전역 함수]]나 [[전역 변수]]도 허용되지 않는다.
즉, 모든 [[인스턴스]]나 [[메서드]]는 반드시 특정 [[클래스]]의 멤버로 소속되어야 한다.
* C#에서는 데이터 은닉과 보안성 향상을 위해 [[프렌드 함수]]를 지원하지 않는다.
대신 C# 3.0부터 이와 비슷한 [[확장 메서드]]를 지원하고 있다.
[[확장 메서드]]는 [[정적 클래스]]의 멤버로 있어야 하며 이 때에도 대상 클래스의 private 멤버에는 접근 할 수 없다.