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

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

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

이제 제가 이야기하고 싶은 것은 C#의 버전 처리입니다. 사실 이는 모든 소프트웨어가 고려해야 할 문제입니다(제가 작성한 내용은 제외). 따라서 버전 처리는 매우 중요합니다. .Java는 이 문제를 매우 잘 처리하는데, 개인적으로 C#은 JAVA의 처리 방식을 그대로 따서 잘 작동한다고 생각합니다.

C#에서 메소드를 선언할 때 virtual을 사용하면 이 키워드는 in에 있습니다. 파생 클래스의 경우 override 또는 new 키워드를 사용하여 해당 클래스를 더 이상 사용하지 않거나 무시할 수 있습니다. 부모 클래스에서는 virtual 키워드를 사용하지만 파생 클래스에서는 사용하지 않는 경우 override 또는 new 키워드를 사용하여 메서드를 직접 참조하는 경우 이름이 동일하면 컴파일러는 오류를 보고하고 파생 클래스의 메서드를 무시하는 새 모드에서 실행합니다. 다음 예는 이해하는 데 도움이 될 수 있습니다.


000: // Versioningversioning.cs
001: 공용 클래스 MyBase
002: {
003: 공용 가상 문자열 Meth1()
004: {
005: "MyBase-Meth1" 반환;
006: }
007: 공개 가상 문자열 Meth2()
008: {
009: "MyBase-Meth2" 반환;
010: }
011: 공개 가상 문자열 Meth3()
012: {
013: "MyBase-Meth3" 반환;
014: }
015: }
016:
017: 클래스 MyDerived : MyBase
018: {
019: 공개 재정의 string Meth1()
020: {
021: return "MyDerived-Meth1";
022: }
023: 공개 새 문자열 Meth2()
024: {
025: return "MyDerived-Meth2";
026: }
027: public string Meth3() // 시스템에 여기에 경고가 표시되며 Meth3() 메서드는 숨겨집니다
028:
029:
030: {
031: return "MyDerived-Meth3";
032: }
033:
034: public static void Main()
035: {
036: MyDerived mD = new MyDerived();
037: MyBase mB = (MyBase) mD;
038:
039: System.Console.WriteLine(mB.Meth1());
040: System.Console.WriteLine(mB.Meth2());
041: System.Console.WriteLine(mB.Meth3());
042: }
043: }

출력:

MyDerived-Meth1
MyBase-Meth2
MyBase-Meth3
을 보면 마지막 두 개의 새로운 키워드의 출력이 따라서 new 키워드의 기능은 이전 버전에 이 메서드가 있으면 현재 메서드 대신 이전 메서드가 사용된다는 것을 알 수 있습니다. 함수는 부모 클래스에 그런 메소드가 있으면 지금 작성하고 있는 메소드 내용을 사용하고 이전 메소드는 놔두는 것인데, 여기서는 new를 사용하는 것은 좋지 않은 것 같습니다(아, 바보네요. Going to hit me again!&*%$#@).

037행을 제거하고 039-041의 모든 mB를 mD로 변경하면 출력은 다음과 같이 변경됩니다.

MyDerived- Meth1
MyDerived-Meth2
MyDerived-Meth3

무슨 뜻인가요? 파생 클래스의 객체는 상위 클래스에 의해서만 재정의될 수 있다는 뜻입니다. 하하, 이건 정말 이해하기 어렵네요. 직접 해보아야만 소위 "연습이 C# 테스트의 유일한 기준"이라는 것을 알 수 있습니다. 하하! >C#에서는 아래와 같이 파생 클래스에 메서드를 자유롭게 추가하거나 상위 클래스의 메서드를 재정의할 수 있습니다. 이는 매우 간단합니다.

class Base {}

class Derived: Base

{
public void F() {}
}
및:

class Base

{

public void F() {}
}
class Derived: Base
{
public void F() {}
}

위는 SUNWEN 튜토리얼 - C# Advanced(6)입니다. 더 많은 관련 콘텐츠를 보려면 비용을 지불하세요. PHP 중국어 웹사이트(www.php.cn)에 주목하세요!


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