>  기사  >  백엔드 개발  >  SUNWEN 튜토리얼 - C# 고급 (4)

SUNWEN 튜토리얼 - C# 고급 (4)

黄舟
黄舟원래의
2016-12-19 10:19:151236검색

안녕하세요 여러분, 저는 우한 중국 사범 대학교의 SUNWEN입니다. 하하, 드디어 오후에 놀러 갈 시간이 생겼습니다. 티켓은 10 위안인데 비싸지 않습니다. 많은 사진을 얻을 수 있습니다. 여러분, 한 번 살펴보세요.

더 이상 고민하지 말고, 이번에 말씀드리고 싶은 것은 C#의 속성입니다. 예를 들어, 내가 남자라면 남자는 나다. 나는 신입생이고, 나의 신입생도 나의 속성이다. 매우 간단합니다. 하하! 아래에서 두 가지 예를 들어보겠습니다. 첫 번째 예에서는 수정 가능한 속성을 선언하는 방법과 추상 속성(Abstract)을 생성하고 이를 하위 클래스에서 삭제하는 방법을 설명합니다. 시작해 보겠습니다.

예 1:


000: // PRopertiesperson.cs
001: using System;
002: class Person
003: {
004: private string myName ="N/A";
005: private int myAge = 0;
006:
007: // 문자 속성 선언 Name
008: public string 이름
009: {
010: get
011: {
012: return myName;
013: }
014: set
015: {
016: myName = value;
017: }
018: }
019:
020: // int 유형의 Age 속성 선언
021: public int Age
022: {
023: get
024: {
025: return myAge
026: }
027: set
028: {
029: myAge = value; : }
031: }
032:
033: 공개 재정의 문자열 ToString()
034: {
035: return "Name = " + Name + ", Age = " + Age ;
036: }
037:
038: public static void Main()
039: {
040: Console.WriteLine("단순 속성");
041:
042: // Person 인스턴스 생성
043: Person person = new Person();
044:
045: //해당 속성을 인쇄합니다
046: Console.WriteLine("Person 세부정보 - {0}", 사람);
047:
048: // 속성에 대한 일부 설정
049: person.Name = "Joe";
050: person.Age = 99;
051: Console.WriteLine(" 개인 정보 - {0}", person);
052:
053: // 연령 추가
054: person.Age += 1;
055: Console.WriteLine("개인 정보 - {0}", person);
056: }
057: }
이 예제의 출력은 다음과 같습니다.

단순 속성

사람 세부 정보 - 이름 = 해당 없음, 나이 = 0
사람 세부 정보 - 이름 = Joe, 나이 = 99
사람 세부 정보 - 이름 = Joe, 나이 = 100

알겠습니다. 어제 또 일어나서 잠이 들었네요 ㅎㅎ 오늘은 글을 몇 개나 쓸 수 있는지 살펴보겠습니다

위 프로그램을 보면 VB의 개념을 빌려 클래스의 속성을 설정하는 방식이 java와 다르다는 것을 알 수 있습니다. (이것이 바로 M$, TMD입니다!) 몇몇 친구들은 왜 Console.WriteLine(을 사용해야 하는지 궁금해 할 수도 있습니다. ) 객체를 인쇄하는 것은 사실 매우 간단합니다. JAVA에서와 마찬가지로 조정기가 인쇄 메소드를 사용할 때 객체는 자동으로 ToString()을 호출합니다(JAVA, TMD에서는 toString이 또 거의 잘못되었습니다!). ) 메소드를 보면 이 메소드에 그림자가 있는 것을 알 수 있습니다. override 키워드는 아마도 상위 클래스를 재정의하는 메소드일 것입니다. 객체의 속성 설정이 다소 중복되지 않나요? get()과 set()의 조합을 통해 완료됩니다. 물론 value라는 것도 있습니다. 또한 간단히 get() 및 set()을 제거하여 속성의 읽기/쓰기 권한을 제어할 수도 있습니다. 예를 들어 속성을 작성하고 싶지 않으면 set()을 사용하지 마세요. 읽기를 원하지 않으면 get()을 사용하지 마세요. 저는 항상 C#이 유연하지 않다고 생각합니다. 이 점에 관해서는 JAVA로(이제 끝났습니다. 다시 두들겨 맞을 것입니다!)

두 번째 예:

이 예는 추상 속성(Abstract)을 설정하는 방법을 보여줍니다. 추상 속성? 소위 추상 속성은... (아아, 매번 너무 말도 안 돼요! FT) 추상 클래스는 실행 속성 액세스 절차를 제공하지 않으며 하위 클래스에서는 무시될 수 있습니다. 결과를 얻으려면 별도로 컴파일해야 합니다.

abstractshape.cs: Shape 클래스, Area 추상 속성 포함

shapes.cs: Shape의 하위 클래스
shapetest.cs:
이러한 프로그램을 컴파일하려면 다음을 실행하세요. csc abstractshape .cs Shapetest.cs 실행 후 실행 프로그램 Shapetest.exe가 생성됩니다.

000: // Propertiesabstractshape.cs
001: using System;
002:
003: 공개 추상 클래스 Shape
004: {
005: 비공개 문자열 myId;
006:
007: public Shape(string s)
008: {
009: Id = s; // 이 문장은 Id 속성의 집합 빌더를 호출합니다
010: }
011 :
012: 공개 문자열 ID
013: {
014: get
015: {
016: return myId;
017: }
018:
019 : set
020: {
021: myId = value;
022: }
023: }
024:
025: public abstract double Area
026: {
027: get;
028: }
029:
030: 공개 재정의 문자열 ToString()
031: {
032: return Id + " Area = " + double.Format (Area, "F");
033: }
034: }
이 프로그램을 보면 사실 매우 간단합니다. 이 클래스 쌍의 객체가 생성되면 초기화 부분은 007-입니다. 010, Id 속성에 객체를 생성하기 위한 매개변수를 제공합니다. 그런 다음 이전 예제의 작업을 수행합니다. 실제로 JAVA의 인터페이스와 추상 속성을 비교할 수 있습니다. 추상 속성 Area와 마찬가지로 get이 있지만 get 메서드의 내용(메서드라고 부를 수 없을 수도 있음), 즉 get으로 수행할 작업을 지정하지 않습니다. 이 문제는 하위 클래스가 수행하는 작업에 의해 결정됩니다.

두 번째 파일: 이 파일에서 클래스는 Area 속성을 재정의합니다.

000: // Propertiesshapes.cs
001: public 클래스 Square : Shape
002: {
003: private int mySide;
004:
005: public Square(int side, string id) : base(id)
006 : {
007: mySide = side;
008: }
009:
010: 공개 재정의 이중 영역
011: {
012: get
013: {
014: return mySide * mySide;
015: }
016: }
017: }
018:
019: 공개 클래스 Circle: Shape
020: {
021: 비공개 int myRadius;
022:
023: public Circle(int radius, string id) : base(id)
024: {
025: myRadius = radius;
026 : }
027:
028: 공개 재정의 이중 영역
029: {
030: get
031: {
032: return myRadius * myRadius * System.Math.PI
033; : }
034: }
035: }
036:
037: 공개 클래스 Rectangle : Shape
038: {
039: 비공개 int myWidth;
040: 비공개 int myHeight;
041:
042: public Rectangle(int width, int height, string id) : base(id)
043: {
044: myWidth = width;
045: myHeight = height;
046: }
047:
048: public override double Area
049: {
050: get
051: {
052: return myWidth * myHeight;
053: }
054: }
055: }
이 예는 우리를 약간 혼란스럽게 만듭니다. 그것은 무엇을 하는가? 이는 JAVA의 Extends와 동일합니다. 그런 것 같아요.

아래 세 번째 파일은 매우 간단합니다.

001을 살펴보세요. : public class TestClass
002: {
003: public static void Main()
004: {
005: Shape[] Shape =
006: {
007: new Square (5, "사각형 #1"),
008: new Circle(3, "원형 #1"),
009: new Rectangle( 4, 5, "Rectangle #1")
010: };
011:
012: System.Console.WriteLine("Shapes Collection");
013: foreach(Shape s in Shape)
014: {
015: System.Console .WriteLine(s);
016: }
017:
018: }
019: }
이 예에서 이 기호는 실제로 확장, 즉 상속을 의미합니다. 직설적으로 말하면, 아래 문장에서 sunwenson은 sunwen을 확장하고, 이름은 sunwenson 클래스가 sunwen 클래스를 상속한다는 의미이며, 다음을 추가할 수 있습니다. sunwen에서 일부 항목을 동시에 삭제하는 것은 간단하지만 이는 소프트웨어의 재사용성을 크게 향상시킬 수 있기 때문에 현대 소프트웨어 개발에 중요한 기술입니다. , 저는 자격이 없습니다. 하하.

이 프로그램의 출력은 다음과 같습니다:

Shapes Collection

사각형 #1 면적 = 25.00
원 #1 면적 = 28.27
직사각형 #1 영역 = 20.00
이 섹션이 다시 끝났습니다. 특히 JAVA 또는 C++ 프로그래밍 경험이 없는 사람들에게는 이 섹션을 이해하기가 다소 어렵습니다. 계속 배울 용기가 있다면 분명 뭔가를 얻을 것입니다. 저도 좀 쉬어야겠습니다. ㅎㅎ 아직 아침도 안 먹었네요!

위 내용은 SUNWEN 튜토리얼 내용입니다 --- - C# 고급(4), 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.