시리즈:쉽게 배우는 프로그래밍 입문/C 샵: 두 판 사이의 차이

63번째 줄: 63번째 줄:
<source lang="csharp">
<source lang="csharp">
// 64Bit라면 콘솔에 64Bit!를 출력한다.
// 64Bit라면 콘솔에 64Bit!를 출력한다.
if(Environment.Is64BitOperatingSystem){
if (Environment.Is64BitOperatingSystem)
Console.WriteLine("64Bit!");
{
    Console.WriteLine("64Bit!");
}
}
</source>
</source>
if ... else ... 문은 특정 조건문이 만족되면 if와 else 사이의 코드를 실행하고, 아니라면 else 밑의 코드를 실행한다.
if ... else ... 문은 특정 조건문이 만족되면 if와 else 사이의 코드를 실행하고, 아니라면 else 밑의 코드를 실행한다.
<source lang="csharp">
<source lang="csharp">
if(Environment.Is64BitOperatingSystem){
if (Environment.Is64BitOperatingSystem)
// 64Bit라면 콘솔에 64Bit!를 출력하고 아니라면 32Bit!를 출력한다.
{
Console.WriteLine("64Bit!");
    // 64Bit라면 콘솔에 64Bit!를 출력하고 아니라면 32Bit!를 출력한다.
}else{
    Console.WriteLine("64Bit!");
Console.WriteLine("32Bit!");
}
else
{
    Console.WriteLine("32Bit!");
}
}
</source>
</source>
79번째 줄: 83번째 줄:
<source lang="csharp">
<source lang="csharp">
string username = Environment.UserName; // Windows 사용자 이름을 가져온다.
string username = Environment.UserName; // Windows 사용자 이름을 가져온다.
if(username=="LibreWiki"){ // username이 LibreWiki라면
if (username == "LibreWiki") // username이 LibreWiki라면
Console.WriteLine("what we need is liberty."); // 이런 메세지를 출력
{
} else if(username=="Wikipedia"){ // username이 Wikipedia라면
    Console.WriteLine("what we need is liberty."); // 이런 메세지를 출력
Console.WriteLine("NPOV is important."); // 이런 메세지를 출력
}
} else if(username=="Uncyclopedia"){ // username이 Uncyclopedia라면
else if (username == "Wikipedia") // username이 Wikipedia라면
Console.WriteLine("ㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹ!"); // 이런 메세지를 출력
{
} else if(username=="RigvedaWiki"){ // username이 RigvedaWiki라면
    Console.WriteLine("NPOV is important."); // 이런 메세지를 출력
Console.WriteLine("Bronze Age"); // 이런 메세지를 출력
}
} else { // 이도저도 아니라면
else if (username == "Uncyclopedia") // username이 Uncyclopedia라면
Console.WriteLine("I don't know you."); // 이런 메세지를 출력
{
    Console.WriteLine("ㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹ!"); // 이런 메세지를 출력
}
}
else if (username=="RigvedaWiki") // username이 RigvedaWiki라면
{
    Console.WriteLine("Bronze Age"); // 이런 메세지를 출력
}
else // 이도저도 아니라면
{
    Console.WriteLine("I don't know you."); // 이런 메세지를 출력
}
</source>
==== switch ====
=== 반복문 ===
==== for ====
==== foreach ====
==== while ====
==== do - while ====
=== goto ===
<source lang="csharp">
    if (qux == "foo")
    {
        goto Foo;
    }
    else
    {
        goto Bar;
    }
Foo:
    Console.WriteLine("Foo");
    goto Baz;
Bar:
    Console.WriteLine("Bar");
    goto Baz;
Baz:
    Console.WriteLine("Baz");
</source>
</source>
위는 변수 qux의 값이 foo 이면 goto문으로 Foo로 이동하여 Foo를 출력하고 Baz로 이동하여 Baz를 출력하며 qux의 값이 foo가 아니면 Bar로 이동하여 Bar를 출력하고 Baz로 이동하여 Baz를 출력하는 예제다. 그냥 이런 것이 있다는 것만 알고 넘어가자. goto문은 '''사용이 권장되지 않는다.'''


== 클래스 ==
== 클래스 ==

2015년 5월 18일 (월) 17:59 판

문서의 내용이 너무 쉬워서 오늘부터 프로그래밍 할 수 있을 것 같습니다.

이 문서에는 독자적으로 연구한 내용이 들어갑니다. 다른 사람의 의견을 존중하면서 무례하지 않도록 작성해 주시고, 의견 충돌 시 토론 문서에서 토론해 주세요.

마이크로소프트에서 JavaC++의 장점을 합쳐서 만든 언어. 퓨전 Java와 문법이 상당히 흡사하다. 단 Java에서 가능 한 것이 C#에선 컴파일 오류 내기도 하고 C#에선 되는 것이 Java에선 다르게 동작하기도 하는 경우도 있다. 그리고 Java와는 달리 포인터도 사용이 가능하다. 단 unsafe 로 선언한 부분에서만 사용이 가능하다.

준비

Visual Studio 커뮤니티 2013

개인 사용자들에게는 무료로 공개되어있는 버전이다. 참고로 이거 하나면 C# 뿐만이 아니라 C++, VB.NET 개발도 가능하다.

이거 안하면 저주받는다 카더라Hello, World!

콘솔 응용 프로그램 프로젝트를 생성하고 main 메소드 내에 다음 내용을 입력하고 실행해보자.

Console.Write("Hello, World!");

데이터 타입

정수를 나타내고 저장하는 데는 byte(System.Byte), short(System.Int16), int(System.Int32), long(System.Int64)등을 쓴다.

그리고 소수를 나타내고 저장하는 데는 float(System.Single), Decimal(System.Decimal)을 쓴다.

당연한 애기지만 소수를 저장하는데 정수형 자료형을 쓰면 소수 아랫부분이 다 짤리니 주의해야 한다.

이외에 참과 거짓을 나타내는 데에는 bool(System.Boolean), 문자를 표현할 때에는 (System.Char)를, 문자열을 표현하는데는 string(System.String)를 쓴다.

C# 데이터 타입
데이터 타입 클래스 크기(byte) 최소 값 최대 값 비고
bool System.Boolean 1 - - false 또는 true
byte System.Byte 1 0 255 정수
short System.Int16 2 -32768 32767 정수
int System.Int32 4 -2147483648 2147483647 정수
long System.Int64 8 -9223372036854775808 9223372036854775807 정수
ushort System.UInt16 2 0 65535 정수
uint System.UInt32 4 0 4294967295 정수
ulong System.UInt64 8 0 18446744073709551615 정수
float System.Single 4 -3.402823E+38 3.402823E+38 단정밀도 부동 소수점
double System.Double 8 -1.79769313486232E+308 1.79769313486232E+308 배정밀도 부동 소수점
decimal System.Decimal 16 -79228162514264337593543950335 79228162514264337593543950335
char System.Char 2 0 65535 문자(UTF-16)
string System.String - - - 문자열

제어문

제어문은 코드 실행의 흐름을 제어함으로써, 프로그래밍에서 가장 중요하다고 할 수 있다.

조건문

조건문에는 크게 if문과 switch문이 있다.

if

if문은 특정 조건문이 만족되면 그 안의 코드를 실행한다.

// 64Bit라면 콘솔에 64Bit!를 출력한다.
if (Environment.Is64BitOperatingSystem)
{
    Console.WriteLine("64Bit!");
}

if ... else ... 문은 특정 조건문이 만족되면 if와 else 사이의 코드를 실행하고, 아니라면 else 밑의 코드를 실행한다.

if (Environment.Is64BitOperatingSystem)
{
    // 64Bit라면 콘솔에 64Bit!를 출력하고 아니라면 32Bit!를 출력한다.
    Console.WriteLine("64Bit!");
}
else
{
    Console.WriteLine("32Bit!");
}

if ... else if .... else와 같이 사용할 수도 있다. 이건 예제로 보자 (주석도)

string username = Environment.UserName; // Windows 사용자 이름을 가져온다.
if (username == "LibreWiki") // username이 LibreWiki라면
{ 
    Console.WriteLine("what we need is liberty."); // 이런 메세지를 출력
}
else if (username == "Wikipedia") // username이 Wikipedia라면
{
    Console.WriteLine("NPOV is important."); // 이런 메세지를 출력
}
else if (username == "Uncyclopedia") // username이 Uncyclopedia라면
{
    Console.WriteLine("ㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹ!"); // 이런 메세지를 출력
}
else if (username=="RigvedaWiki") // username이 RigvedaWiki라면
{
    Console.WriteLine("Bronze Age"); // 이런 메세지를 출력
}
else // 이도저도 아니라면
{
    Console.WriteLine("I don't know you."); // 이런 메세지를 출력
}

switch

반복문

for

foreach

while

do - while

goto

    if (qux == "foo")
    {
        goto Foo;
    }
    else
    {
        goto Bar;
    }

Foo:
    Console.WriteLine("Foo");
    goto Baz;

Bar:
    Console.WriteLine("Bar");
    goto Baz;

Baz:
    Console.WriteLine("Baz");

위는 변수 qux의 값이 foo 이면 goto문으로 Foo로 이동하여 Foo를 출력하고 Baz로 이동하여 Baz를 출력하며 qux의 값이 foo가 아니면 Bar로 이동하여 Bar를 출력하고 Baz로 이동하여 Baz를 출력하는 예제다. 그냥 이런 것이 있다는 것만 알고 넘어가자. goto문은 사용이 권장되지 않는다.

클래스

주석

/*
작성자: 지나가던 위키니트
작성일: 2015-05-13
*/

/// <summary>
/// 클래스 Foo
/// </summary>
public class Foo
{
    /// <summary>
    /// 프로퍼티 Bar
    /// </summary>
    public string Bar { get; set; }

    public Foo()
    {
        // 여기가 생성자
         this.Bar = string.Empty; // Bar에 빈 값을 넣는다.
    }
}

//는 //부터 그 뒤의 내용 한줄만 주석이 된다. /* */는 /*가 시작하는 부분부터 */가 나오는 곳까지 모두 주석이 된다. 클래스나 변수 위에 있는 /// 같은 곳에 입력한 주석은 비주얼 스튜디오 내에서 해당 변수에 마우스를 올리면 저 주석 내용이 표시되게 된다. 클래스나 메소드 같은 곳 위에 /// 를 입력하면 비주얼 스튜디오가 알아서 해당 주석 템플릿을 만들어주니 주석 내용만 입력만 해주면 된다.

예외처리

try
{
    // 실행될 내용
}
catch (Exception ex)
{
    // try 문에서 오류 발생 시 실행될 내용
}
finally
{
    // try 문이 끝나거나 catch 문이 끝나면 실행될 내용
}

위와 같이 예외처리할 부분은 try catch 문으로 묶어준다. finally는 생략 가능. catch 문에 있는 ex 파라메타는 오류 발생 시 그 오류 정보를 담고 있는 변수로 Message 프로퍼티에 오류 내용이 텍스트로 적혀있다.

람다

var func=delegate(string x){Console.WriteLine(x);}
func("Hello, World!");

위과 같이 무명 메소드를 사용할 수 있다. 이 무명 메소드는 대리자가 필요하긴 한데 메소드 하나 더 만들기 아까울때 사용하면 좋다.

또한 위와 같이 말고 아래의 같이 람다 식을 사용할 수 있다. 람다식은 한줄짜리를 쓸때 유용하다.

var func=x => x*x;
Console.Write(func(5));

LINQ

틀:쉽게 배우는 프로그래밍 입문