C# 튜토리얼login
C# 튜토리얼
작가:php.cn  업데이트 시간:2022-04-11 14:06:23

C# 클래스



클래스를 정의할 때 데이터 유형의 청사진을 정의합니다. 이는 실제로 데이터를 정의하지는 않지만 클래스 이름이 무엇을 의미하는지, 즉 클래스의 객체가 무엇으로 구성되어 있는지, 이 객체에 대해 어떤 작업을 수행할 수 있는지 정의합니다. 객체는 클래스의 인스턴스입니다. 클래스를 구성하는 메서드와 변수는 클래스의 멤버가 됩니다.

클래스 정의

클래스 정의는 class 키워드로 시작하고 그 뒤에 클래스 이름이 옵니다. 한 쌍의 중괄호로 묶인 클래스 본문입니다. 다음은 클래스 정의의 일반적인 형식입니다.

<access specifier> class  class_name 
{
    // member variables
    <access specifier> <data type> variable1;
    <access specifier> <data type> variable2;
    ...
    <access specifier> <data type> variableN;
    // member methods
    <access specifier> <return type> method1(parameter_list) 
    {
        // method body 
    }
    <access specifier> <return type> method2(parameter_list) 
    {
        // method body 
    }
    ...
    <access specifier> <return type> methodN(parameter_list) 
    {
        // method body 
    }
}

참고:

  • 액세스 식별자 <액세스 지정자>는 클래스와 해당 멤버에 대한 액세스 규칙을 지정합니다. 지정하지 않으면 기본 액세스 식별자가 사용됩니다. 클래스의 기본 액세스 식별자는 internal이고 멤버의 기본 액세스 식별자는 private입니다.

  • 데이터 유형 <data type>은 변수의 유형을 지정하고, 반환 유형 <return type>은 반환된 메서드에서 반환된 데이터 유형을 지정합니다.

  • 클래스의 멤버에 액세스하려면 점(.) 연산자를 사용하면 됩니다.

  • 도트 연산자는 개체 이름과 멤버 이름을 연결합니다.

다음 예는 지금까지 논의된 개념을 보여줍니다.

using System;
namespace BoxApplication
{
    class Box
    {
       public double length;   // 长度
       public double breadth;  // 宽度
       public double height;   // 高度
    }
    class Boxtester
    {
        static void Main(string[] args)
        {
            Box Box1 = new Box();        // 声明 Box1,类型为 Box
            Box Box2 = new Box();        // 声明 Box2,类型为 Box
            double volume = 0.0;         // 体积

            // Box1 详述
            Box1.height = 5.0;
            Box1.length = 6.0;
            Box1.breadth = 7.0;

            // Box2 详述
            Box2.height = 10.0;
            Box2.length = 12.0;
            Box2.breadth = 13.0;
           
            // Box1 的体积
            volume = Box1.height * Box1.length * Box1.breadth;
            Console.WriteLine("Box1 的体积: {0}",  volume);

            // Box2 的体积
            volume = Box2.height * Box2.length * Box2.breadth;
            Console.WriteLine("Box2 的体积: {0}", volume);
            Console.ReadKey();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Box1 的体积: 210
Box2 的体积: 1560

Member Functions and Encapsulation

클래스의 멤버 함수는 A입니다. 함수는 다른 변수와 마찬가지로 클래스 정의 내에 정의 또는 프로토타입을 가지고 있습니다. 클래스의 멤버로서 클래스의 모든 개체에 대해 작동할 수 있으며 개체 클래스의 모든 멤버에 액세스할 수 있습니다.

멤버 변수는 (디자인 관점에서) 객체의 속성이며 캡슐화를 위해 비공개로 유지됩니다. 이러한 변수는 공용 멤버 함수를 통해서만 액세스할 수 있습니다.

위 개념을 사용하여 클래스의 다양한 클래스 멤버의 값을 설정하고 가져옵니다.

using System;
namespace BoxApplication
{
    class Box
    {
       private double length;   // 长度
       private double breadth;  // 宽度
       private double height;   // 高度
       public void setLength( double len )
       {
            length = len;
       }

       public void setBreadth( double bre )
       {
            breadth = bre;
       }

       public void setHeight( double hei )
       {
            height = hei;
       }
       public double getVolume()
       {
           return length * breadth * height;
       }
    }
    class Boxtester
    {
        static void Main(string[] args)
        {
            Box Box1 = new Box();        // 声明 Box1,类型为 Box
            Box Box2 = new Box();		 // 声明 Box2,类型为 Box
            double volume;				 // 体积


            // Box1 详述
            Box1.setLength(6.0);
            Box1.setBreadth(7.0);
            Box1.setHeight(5.0);

            // Box2 详述
            Box2.setLength(12.0);
            Box2.setBreadth(13.0);
            Box2.setHeight(10.0);
       
            // Box1 的体积
            volume = Box1.getVolume();
            Console.WriteLine("Box1 的体积: {0}" ,volume);

            // Box2 的体积
            volume = Box2.getVolume();
            Console.WriteLine("Box2 的体积: {0}", volume);
           
            Console.ReadKey();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Box1 的体积: 210
Box2 的体积: 1560

C#의 생성자

클래스의 생성자는 클래스의 새 객체가 생성될 때 실행되는 클래스의 특수 멤버 함수입니다.

생성자 이름은 클래스 이름과 정확히 동일하며 반환 유형이 없습니다.

다음 예에서는 생성자의 개념을 보여줍니다.

using System;
namespace LineApplication
{
   class Line
   {
      private double length;   // 线条的长度
      public Line()
      {
         Console.WriteLine("对象已创建");
      }

      public void setLength( double len )
      {
         length = len;
      }
      public double getLength()
      {
         return length;
      }

      static void Main(string[] args)
      {
         Line line = new Line();    
         // 设置线条长度
         line.setLength(6.0);
         Console.WriteLine("线条的长度: {0}", line.getLength());
         Console.ReadKey();
      }
   }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

对象已创建
线条的长度: 6

기본 생성자 에는 매개 변수가 없습니다. 하지만 매개변수를 가질 수 있는 매개변수가 있는 생성자가 필요한 경우 이러한 종류의 생성자를 매개변수화 생성자라고 합니다. 이 기술은 개체를 생성하는 동안 개체에 초기 값을 할당하는 데 도움이 될 수 있습니다. 자세한 내용은 다음 예를 참조하세요.

using System;
namespace LineApplication
{
   class Line
   {
      private double length;   // 线条的长度
      public Line(double len)  // 参数化构造函数
      {
         Console.WriteLine("对象已创建,length = {0}", len);
         length = len;
      }

      public void setLength( double len )
      {
         length = len;
      }
      public double getLength()
      {
         return length;
      }

      static void Main(string[] args)
      {
         Line line = new Line(10.0);
         Console.WriteLine("线条的长度: {0}", line.getLength()); 
         // 设置线条长度
         line.setLength(6.0);
         Console.WriteLine("线条的长度: {0}", line.getLength()); 
         Console.ReadKey();
      }
   }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

对象已创建,length = 10
线条的长度: 10
线条的长度: 6

Destruction in C# 함수

클래스의 소멸자는 클래스의 객체가 범위를 벗어날 때 실행되는 클래스의 특수 멤버 함수입니다.

소멸자 이름에는 클래스 이름 앞에 물결표(~)가 붙습니다. 이는 값을 반환하지 않으며 매개 변수를 사용하지 않습니다.

소멸자는 프로그램을 종료하기 전에 리소스를 해제하는 데 사용됩니다(예: 파일 닫기, 메모리 해제 등). 소멸자는 상속되거나 오버로드될 수 없습니다.

다음 예에서는 소멸자의 개념을 보여줍니다.

using System;
namespace LineApplication
{
   class Line
   {
      private double length;   // 线条的长度
      public Line()  // 构造函数
      {
         Console.WriteLine("对象已创建");
      }
      ~Line() //析构函数
      {
         Console.WriteLine("对象已删除");
      }

      public void setLength( double len )
      {
         length = len;
      }
      public double getLength()
      {
         return length;
      }

      static void Main(string[] args)
      {
         Line line = new Line();
         // 设置线条长度
         line.setLength(6.0);
         Console.WriteLine("线条的长度: {0}", line.getLength());           
      }
   }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

对象已创建
线条的长度: 6
对象已删除

C# 클래스의 정적 멤버

static 키워드를 사용하여 클래스 멤버를 정적으로 정의할 수 있습니다. 클래스 멤버를 정적으로 선언하면 클래스의 개체 수에 관계없이 정적 멤버의 복사본은 하나만 남게 됩니다.

키워드 static은 클래스에 이 멤버의 인스턴스가 하나만 있음을 의미합니다. 정적 변수는 클래스의 인스턴스를 생성하지 않고 클래스를 직접 호출하여 값을 얻을 수 있기 때문에 상수를 정의하는 데 사용됩니다. 정적 변수는 멤버 함수 또는 클래스 정의 외부에서 초기화될 수 있습니다. 클래스 정의 내에서 정적 변수를 초기화할 수도 있습니다.

다음 예에서는 정적 변수의 사용법을 보여줍니다.

using System;
namespace StaticVarApplication
{
    class StaticVar
    {
       public static int num;
        public void count()
        {
            num++;
        }
        public int getNum()
        {
            return num;
        }
    }
    class StaticTester
    {
        static void Main(string[] args)
        {
            StaticVar s1 = new StaticVar();
            StaticVar s2 = new StaticVar();
            s1.count();
            s1.count();
            s1.count();
            s2.count();
            s2.count();
            s2.count();         
            Console.WriteLine("s1 的变量 num: {0}", s1.getNum());
            Console.WriteLine("s2 的变量 num: {0}", s2.getNum());
            Console.ReadKey();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

s1 的变量 num: 6
s2 的变量 num: 6

멤버 함수static로 선언할 수도 있습니다. 이러한 함수는 정적 변수에만 액세스할 수 있습니다. 객체가 생성되기 전에 정적 함수가 존재합니다. 다음 예에서는 정적 함수의 사용을 보여줍니다.

using System;
namespace StaticVarApplication
{
    class StaticVar
    {
       public static int num;
        public void count()
        {
            num++;
        }
        public static int getNum()
        {
            return num;
        }
    }
    class StaticTester
    {
        static void Main(string[] args)
        {
            StaticVar s = new StaticVar();
            s.count();
            s.count();
            s.count();                   
            Console.WriteLine("变量 num: {0}", StaticVar.getNum());
            Console.ReadKey();
        }
    }
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

变量 num: 3

PHP 중국어 웹사이트