C# 기본

|
기본 출력
using System;

class MainClass
{
    public static void Main()
    {
        Console.WriteLine("A simple C# program.");
    }
}

메인함수 인자 반복 출력
using System;

class MainClass
{
    public static void Main(string[] args)
    {
        foreach (string arg in args)
            Console.WriteLine("Arg: {0}", arg);
    }
}

메인함수 리턴
using System;

class MainClass
{
    public static int Main()
    {
        Console.WriteLine("Hello, Universe!");
        return (0);
    }
}

메인함수 4가지 형태
using System;

class MainClass
{
    static void Main()
    {
    }

    static int Main()
    {
    }

    static void Main(string[] args)
    {
    }

    static int Main(string[] args)
    {
    }
}

인자 옵션 사용 여부 확인
class MainClass
{
    static void Main(string[] args)
    {
        if (args[0][0] == '-')
        {
            System.Console.WriteLine("-");
        }
    }
}

WriteLine 문자열 안에 변수 사용
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("{0} command line arguments were specified:", args.Length);
        foreach (string arg in args)
            Console.WriteLine(arg);
    }
}

네임스페이스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("A simple C# program.");
        System.Console.WriteLine("A simple C# program.");
    }
}

네임스페이스 사용, [STAThread]
기본적으로, VS .NET에 의해 만들어진 응용 프로그램의 Main()메소드에는 [STAThread] 어트리뷰트가 첨가되어 있다. 
이 어트리뷰트는 해당 응용 프로그램이 COM형식을 이용하는 경우에 (단지 이 경우에만 해당하는 것인데) 해당 응용 프로그램이 
단일 스레드 아파트(single threaded apartment, STA) 모델로 설정되어야 한다는 것을 런타임에게 알려주는 역할을 한다. 
해당 응용 프로그램에서 COM 형식을 이용하지 않는다면, [STAThread] 어트리뷰트는 무시되기 때문에 삭제해도 무방하다.
using System;

namespace HelloWorld
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            System.Console.WriteLine("Hello world from C#");
        }
    }
}

네임스페이스 안에 들어 있는 클래스 객체 생성
using System;

namespace Counter
{
    class MyClass
    {
    }
}

class MainClass
{
    public static void Main()
    {
        Counter.MyClass my = new Counter.MyClass();
    }
}

네임스페이스 별명 사용
using ThatConsoleClass = System.Console;

class MainClass
{
    public static void Main()
    {
        ThatConsoleClass.WriteLine("Hello");
    }
}

네임스페이스 안의 클래스 사용하여 출력
using System;

namespace Counter
{
    class MyClass
    {
        public MyClass()
        {
            Console.WriteLine("Counter1 namespace.");
        }
    }
}

namespace Counter2
{
    class MyClass
    {
        public MyClass()
        {
            Console.WriteLine("Counter2 namespace.");
        }
    }
}

class MainClass
{
    public static void Main()
    {
        Counter.MyClass m1 = new Counter.MyClass();

        Counter2.MyClass m2 = new Counter2.MyClass();
    }
}

네임스페이스를 나누어서 클래스 정의 가능
using System;

using Counter;

namespace Counter
{
    class MyClass
    {
    }
}

namespace Counter
{
    class MySecondClass
    {
    }
}

class MainClass
{
    public static void Main()
    {
        MyClass m = new MyClass();
        MySecondClass cu = new MySecondClass();
    }
}

네스티디 네임스페이스
using System;

namespace NS1
{
    class ClassA
    {
        public ClassA()
        {
            Console.WriteLine("constructing ClassA");
        }
    }
    namespace NS2
    {
        class ClassB
        {
            public ClassB()
            {
                Console.WriteLine("constructing ClassB");
            }
        }
    }
}

class MainClass
{
    public static void Main()
    {
        NS1.ClassA a = new NS1.ClassA();

        NS1.NS2.ClassB b = new NS1.NS2.ClassB();
    }
}

네임스페이스 별명, :: 사용
using System;

using Counter;
using AnotherCounter;

using Ctr = Counter;

namespace Counter
{
    class MyClass
    {
    }
}

namespace AnotherCounter
{
    class MyClass
    {
    }
}

class MainClass
{
    public static void Main()
    {
        Ctr::MyClass m = new Ctr::MyClass();
    }
}

네임스페이스.클래스 오브젝트 = new 네임스페이스.생성자();
namespace CompanyName
{
    public class Car
    {
        public string make;
    }
}

namespace DifferentCompany
{
    public class Car
    {
        public string make;
    }
}

class MainClass
{
    public static void Main()
    {
        System.Console.WriteLine("Creating a CompanyName.Car object");
        CompanyName.Car myCar = new CompanyName.Car();
        myCar.make = "Toyota";
        System.Console.WriteLine("myCar.make = " + myCar.make);

        System.Console.WriteLine("Creating a DifferentCompany.Car object");
        DifferentCompany.Car myOtherCar = new DifferentCompany.Car();
        myOtherCar.make = "Porsche";
        System.Console.WriteLine("myOtherCar.make = " + myOtherCar.make);
    }
}

네임스페이스 계층...
namespace CompanyName
{
    namespace UserInterface
    {
        public class MyClass
        {
            public void Test()
            {
                System.Console.WriteLine("UserInterface Test()");
            }
        }
    }
}

namespace CompanyName.DatabaseAccess
{
    public class MyClass
    {
        public void Test()
        {
            System.Console.WriteLine("DatabaseAccess Test()");
        }
    }
}

class MainClass
{
    public static void Main()
    {
        CompanyName.UserInterface.MyClass myUI = new CompanyName.UserInterface.MyClass();
        CompanyName.DatabaseAccess.MyClass myDB = new CompanyName.DatabaseAccess.MyClass();

        CompanyName.DatabaseAccess.MyClass myMT = new CompanyName.DatabaseAccess.MyClass();

        myUI.Test();
        myDB.Test();
        myMT.Test();
    }
}

-------pause 1.5.15-----

-------start 5장 문자열-----

문자열 선언
using System;

class MainClass
{
    static void Main(string[] args)
    {
        string MyString = "Hello World";
        string Path = @"c:\Program Files";
        string Path2 = "c:\\Program Files";

        string Name = "Joe";
    }
}

문자열 인자로 넘겨서 변환 -> 복사되어 원본은 변경 안됨
using System;

class MainClass
{
    static void Main(string[] args)
    {
        string strOriginal = "Original String";
        Console.WriteLine("Value of strOriginal before call: {0}", strOriginal);

        TryToAlterString(strOriginal);

        Console.WriteLine("Value of strOriginal after call: {0}", strOriginal);
    }

    static void TryToAlterString(string str)
    {
        str = "Modified string";
    }
}

문자열 대분자로 변환, 복사되어 변환, 원본은 그대로
using System;
using System.Collections.Generic;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        string s1 = "This is my string.";
        Console.WriteLine("s1 = {0}", s1);

        string upperString = s1.ToUpper();
        Console.WriteLine("upperString = {0}", upperString);

        Console.WriteLine("s1 = {0}", s1);

        string s2 = "My other string";
        s2 = "New string value";
    }
}

빈 문자열 생성
using System;
using System.IO;
using System.Text;

public class MainClass
{
    public static void Main(String[] args)
    {
        string address = String.Empty;
    }
}

문자열을 한 문자씩 출력
using System;

class MainClass
{
    public static void Main()
    {
        string myString = "To be or not to be";

        for (int count = 0; count < myString.Length; count++)
        {
            Console.WriteLine("myString(" + count + "] = " + myString[count]);
        }
    }
}

문자열 비교, 같으면 0, 앞이면 -1, 뒤면 1, 비교시 대소문자 구분, 일부 문자열만 비교
using System;

class MainClass
{
    public static void Main()
    {
        int result;
        result = String.Compare("bbc", "abc");
        Console.WriteLine("String.Compare(\"bbc\", \"abc\" = " + result);

        result = String.Compare("abc", "bbc");
        Console.WriteLine("String.Compare(\"abc\", \"bbc\" = " + result);

        result = String.Compare("bbc", "bbc");
        Console.WriteLine("String.Compare(\"bbc\", \"bbc\" = " + result);

        result = String.Compare("bbc", "BBC", true);
        Console.WriteLine("String.Compare(\"bbc\", \"BBC\", true = " + result);

        result = String.Compare("bbc", "BBC", false);
        Console.WriteLine("String.Compare(\"bbc\", \"BBC\", false = " + result);

        result = String.Compare("Hello World", 6, "Goodbye World", 8, 5);
        Console.WriteLine("String.Compare(\"Hello World\", 6, " + "\"Goodbye World\", 8, 5) = " + result);
    }
}

문자열 합치기
using System;

class MainClass
{
    public static void Main()
    {
        string myString4 = String.Concat("A, ", "B");
        Console.WriteLine("String.Concat(\"A, \", \"B\") = " + myString4);

        string myString5 = String.Concat("A, ", "B ", "and countrymen");
        Console.WriteLine("String.concat(\"A, \", \"B \", " + "\"and countrymen\") = " + myString5);
    }
}

문자열 합치기 +연산자
using System;

class MainClass
{
    public static void Main()
    {
        string myString6 = "To be, " + "or not to be";
        Console.WriteLine("\"To be, \" + \"or not to be\" = " + myString6);
    }
}

문자열 복사 String.Copy() 이용
using System;

class MainClass
{
    public static void Main()
    {
        string myString4 = "string4";
        Console.WriteLine("myString4 = " + myString4);

        Console.WriteLine("Copying myString4 to myString7 using Copy()");

        string myString7 = String.Copy(myString4);
        Console.WriteLine("myString7 = " + myString7);
    }
}

문자열 비교 String.Equals(str1, str2), str1.Equals(str2), str1 == str2
using System;

class MainClass
{
    public static void Main()
    {
        bool boolResult;
        string myString = "str";
        string myString2 = "str2";

        boolResult = String.Equals("bbc", "bbc");
        Console.WriteLine("String.Equals(\"bbc\", \"bbc\") is " + boolResult);

        boolResult = myString.Equals(myString2);
        Console.WriteLine("myString.Equals(myString2) is " + boolResult);

        boolResult = myString == myString2;
        Console.WriteLine("myString == myString2 is " + boolResult);
    }
}

문자열 형식 지정
using System;

class MainClass
{
    public static void Main()
    {
        float myFloat = 1234.56789f;
        string myString8 = String.Format("{0, 10:f3}", myFloat);
        Console.WriteLine("String.Format(\"{0, 10:f3}\", myFloat) = " + myString8);
    }
}

문자열 합치기. "." 대신 "", " " 등 사용 가능
using System;

class MainClass
{
    public static void Main()
    {
        string[] myStrings = { "To", "be", "or", "not", "to", "be" };
        string myString9 = String.Join(".", myStrings);
        Console.WriteLine("myString9 = " + myString9);
    }
}

문자열 나누기
using System;

class MainClass
{
    public static void Main()
    {
        string[] myStrings = { "To", "be", "or", "not", "to", "be" };
        string myString9 = String.Join(".", myStrings);
        myStrings = myString9.Split('.');
        foreach (string mySplitString in myStrings)
        {
            Console.WriteLine("mySplitString = " + mySplitString);
        }
    }
}

문자열에서 문자의 인덱스 추출
using System;

class MainClass
{
    public static void Main()
    {
        string[] myStrings = { "To", "be", "or", "not", "to", "be" };
        string myString = String.Join(".", myStrings);

        char[] myChars = { 'b', 'e' };
        int index = myString.IndexOfAny(myChars);
        Console.WriteLine("'b' and 'e' occur at index " + index + " of myString");
        index = myString.LastIndexOfAny(myChars);
        Console.WriteLine("'b' and 'e' last occur at index " + index + " of myString");
    }
}

문자열 추가, 삭제, 치환(대소문자 일치해야 함)
using System;

class MainClass
{
    public static void Main()
    {
        string[] myStrings = { "To", "be", "or", "not", "to", "be" };
        string myString = String.Join(".", myStrings);

        string myString10 = myString.Insert(6, "A, ");
        Console.WriteLine("myString.Insert(6, \"A, \") = " + myString10);

        string myString11 = myString10.Remove(14, 7);
        Console.WriteLine("myString10.Remove(14, 7) = " + myString11);

        string myString12 = myString11.Replace(',', '?');
        Console.WriteLine("myString11.Replace(',', '?') = " + myString12);

        string myString13 = myString12.Replace("to be", "Or not to be A");
        Console.WriteLine("myString12.Replace(\"to be\", \"Or not to be A\") = " + myString13);
    }
}

문자열 좌우에 공백, 또는 문자 채우기
using System;

class MainClass
{
    public static void Main()
    {
        string[] myStrings = { "To", "Be", "or", "not", "to", "be" };
        string myString = String.Join(".", myStrings);

        string myString14 = '(' + myString.PadLeft(20) + ')';
        Console.WriteLine("'(' + myString.PadLeft(20) + ')' = " + myString14);

        string myString15 = '(' + myString.PadLeft(20, '.') + ')';
        Console.WriteLine("'(' + myString.PadLeft(20, '.') = " + myString15);

        string myString16 = '(' + myString.PadRight(20) + ')';
        Console.WriteLine("'(' + myString.PadRight(20) + ')' = " + myString16);

        string myString17 = '(' + myString.PadRight(20, '|') + ')';
        Console.WriteLine("'(' + myString.PadRight(20, '|') + ')' = " + myString17);
    }
}

문자열 양 끝 잘라내기, 문자 배열을 인자로 가질 수 있음
using System;

class MainClass
{
    public static void Main()
    {
        string myString18 = '(' + "  Whitespace  ".Trim() + ')';
        Console.WriteLine("'(' + \"  Whitespace  \".Trim() + ')' = " + myString18);

        string myString19 = '(' + "  Whitespace  ".TrimStart() + ')';
        Console.WriteLine("'(' + \"  Whitespace  \".TrimStart() + ')' = " + myString19);

        string myString20 = '(' + "  Whitespace  ee".TrimEnd(new char[] {'e', ' '}) + ')';
        Console.WriteLine("'(' + \"  Whitespace  \".TrimEnd() + ')' = " + myString20);
    }
}




























--------------------------------------http://csharpcomputing.com/Tutorials/Lesson9.htm---------------------------------------

파일 입출력 기본
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if(File.Exists("test.txt"))
            {
                string content = File.ReadAllText("test.txt");
                Console.WriteLine("Current content of file:");
                Console.WriteLine(content);
            }
            Console.WriteLine("Please enter new content for the file:");
            string newContent = Console.ReadLine();
            File.WriteAllText("test.txt", newContent);
        }
    }
}

파일 입출력 스트림 이용
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if (File.Exists("test.txt"))
            {
                string content = File.ReadAllText("test.txt");
                Console.WriteLine("Current content of file:");
                Console.WriteLine(content);
            }
            Console.WriteLine("Please enter new content for the file:");
            using (StreamWriter sw = new StreamWriter("test.txt"))
            {
                string newContent = Console.ReadLine();
                while (newContent != "exit")
                {
                    sw.Write(newContent + Environment.NewLine);
                    newContent = Console.ReadLine();
                }
            }
        }
    }
}

파일 삭제, ReadKey() 문자 입력( 콘솔 화면 멈춤용으로 사용)
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if (File.Exists("test.txt"))
            {
                File.Delete("test.txt");
                if (File.Exists("test.txt") == false)
                {
                    Console.WriteLine("File deleted...");
                }
            }
            else
            {
                Console.WriteLine("File test.txt does not yet exist!");
            }
            Console.ReadKey();
        }
    }
}

디렉토리 삭제
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Directory.Exists("testdir"))
            {
                Directory.Delete("testdir");
                if (Directory.Exists("testdir") == false)
                    Console.WriteLine("Directory deleted...");
            }
            else
                Console.WriteLine("Directory testdir does not yet exist!");
        }
    }
}

파일 이름 변경
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            if (File.Exists("test.txt"))
            {
                Console.WriteLine("Please enter a new name for this file:");
                string newFilename = Console.ReadLine();
                if (newFilename != String.Empty)
                {
                    File.Move("test.txt", newFilename);
                    if (File.Exists(newFilename))
                    {
                        Console.WriteLine("The file was renamed to " + newFilename);
                    }
                }
            }
        }
    }
}

디렉토리 변경
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter a new name for this directory:");
            string newDirName = Console.ReadLine();
            if (newDirName != String.Empty)
            {
                Directory.Move("testdir", newDirName);
                if (Directory.Exists(newDirName))
                {
                    Console.WriteLine("The directory was renamed to " + newDirName);
                }
            }
        }
    }
}

디렉토리 생성
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter a name for the new directory:");
            string newDirName = Console.ReadLine();
            if (newDirName != String.Empty)
            {
                Directory.CreateDirectory(newDirName);
                if (Directory.Exists(newDirName))
                {
                    Console.WriteLine("The directory was created!");
                }
            }
        }
    }
}

현재 파일 정보 얻기
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            FileInfo fi = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
            if (fi != null)
                Console.WriteLine(String.Format("Information about file: {0}, {1} bytes, last modified on {2} - Full path: {3}", fi.Name, fi.Length, fi.LastWriteTime, fi.FullName));
        }
    }
}

디렉토리의 파일 정보 얻기
using System;
using System.IO;

namespace FileHandlingArticleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
            if (di != null)
            {
                FileInfo[] subFiles = di.GetFiles();
                if (subFiles.Length > 0)
                {
                    Console.WriteLine("Files:");
                    foreach (FileInfo subFile in subFiles)
                    {
                        Console.WriteLine("\t" + subFile.Name + "\t(" + subFile.Length + " bytes)");
                    }
                }
            }
        }
    }
}

멤버 변수와 정적 멤버 변수
using System;

class Demo
{
    public static int k;
    public int i;
    public void show()
    {
        Console.WriteLine("k = {0} i = {1}", k, i);
    }
}

class Test
{
    public static void Main()
    {
        Demo a = new Demo();
        a.i = 1;

        Demo b = new Demo();
        b.i = 2;

        Demo.k = 4;

        a.show();
        b.show();
    }
}

ref 타입
using System;

public class Swap
{
    public void swap(ref int x, ref int y)
    {
        int temp = x;
        x = y;
        y = temp;
    }
}

public class Test
{
    static void Main()
    {
        int a = 2;
        int b = 4;

        Swap hi = new Swap();
        hi.swap(ref a, ref b);
        Console.WriteLine("a = {0}, b = {1}", a, b);
    }
}

상속
using System;

class Demo
{
    public class animal
    {
        int weight;
        string name;
        public void show()
        {
            Console.WriteLine("{0} has weight {1}", name, weight);
        }
        public void my_set(int k, string z)
        {
            weight = k;
            name = z;
        }
    }

    public class tiger : animal
    {
        public tiger()
        {
            my_set(100, "tiger");
            show();
        }
    }

    public class lion : animal
    {
        public lion()
        {
            my_set(200, "lion");
            show();
        }
    }

    public static void Main()
    {
        tiger Mike = new tiger();
        lion Bob = new lion();
    }
}

레퍼런스 - 안바뀌는 것
using System;

class Demo
{
    public class Test
    {
        public void change(int k)
        {
            k = k + 2;
        }
    }
    public static void Main()
    {
        int i = 3;
        Test hi = new Test();
        Console.WriteLine("Before {0}", i);
        hi.change(i);
        Console.WriteLine("After {0}", i);
    }
}

레퍼런스 - 리턴받는 것
using System;

class Demo
{
    public class Test
    {
        public int change(int k)
        {
            return k + 2;
        }
    }

    public static void Main()
    {
        int i = 3;
        Test hi = new Test();
        Console.WriteLine("Before {0}", i);
        Console.WriteLine("After {0}", hi.change(i));
    }
}

레퍼런스 - ref 사용한 것
using System;

class Demo
{
    public class Test
    {
        public void change(ref int k)
        {
            k = k + 2;
        }
    }

    public static void Main()
    {
        int i = 3;
        Test hi = new Test();
        Console.WriteLine("Before {0}", i);
        hi.change(ref i);
        Console.WriteLine("After {0}", i);
    }
}

윈도우 폼 생성
using System.Windows.Forms;

class test : Form
{
    public static void Main()
    {
        test Helloform = new test();
        Helloform.Text = "How do you do?";
        Application.Run(Helloform);
    }
}

윈도우 폼 텍스트박스 추가
using System.Windows.Forms;

class test : Form
{
    public static void Main()
    {
        test HelloForm = new test();
        System.Windows.Forms.TextBox text = new System.Windows.Forms.TextBox();

        text.Text = "This is a textbox";
        HelloForm.Controls.Add(text);
        Application.Run(HelloForm);
    }
}

윈도우 폼 체크박스 추가
using System.Windows.Forms;

class test : Form
{
    public static void Main()
    {
        test HelloForm = new test();
        HelloForm.BackColor = System.Drawing.Color.Yellow;

        System.Windows.Forms.CheckBox check = new System.Windows.Forms.CheckBox();
        check.Text = "checkbox";

        HelloForm.Controls.Add(check);
        Application.Run(HelloForm);
    }
}





































'C#' 카테고리의 다른 글

[GUI] Empty Form  (0) 2010.09.19
And