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

黄舟
풀어 주다: 2016-12-19 10:25:34
원래의
1064명이 탐색했습니다.

이제 제가 이야기하고 싶은 것은 앞서 언급한 구조체의 지식을 활용하는 C#의 사용자 정의 변환(User-Defined Conversions)입니다. 잊지 마세요. 다음 강의에서 우리는 구조체의 사용법을 볼 수 있습니다. (아직도 그 사용법에 대해 생각하고 있었습니다. 하하) 클래스로 선언한 것은 클래스이고, 구조체로 선언한 것은 타입으로 간주할 수 있습니다. 예, C#과 같습니다. int, short, long과 같은 유형이 있습니다.

C#을 사용하면 구조(구조체)와 클래스(클래스)를 변환할 수 있으므로 그 안에 일부 변환을 정의할 수 있습니다. 모든 변환 문은 명시적 변환과 암시적 변환 중 하나를 선택해야 한다고 규정합니다. 예를 들어 이 문을 사용하는 경우
int a=10;
System.Console.PRintln(a):
int의 암시적 변환입니다. toString을 사용하는 경우를 표시(display)라고 합니다. 따라서 명시적/숨김의 차이는 표시 여부에 달려 있습니다. 아직은 다들 헷갈리실 텐데요. 나중에 설명하겠습니다. 예시를 적고 분석해 볼 시간이 되었으니 이제 첫 발을 내딛겠습니다!


아~~~~ 드디어 8시 45분에 일어났습니다. 5월 5일 다음은 예입니다. 이 예에서는 RomanNumeral이라는 유형이 선언된 후

000: // UserConversionsconversion.cs
001: using System;
002:
003: struct RomanNumeral
004: {
005: public RomanNumeral(int value)
006: {
007: this.value = value; : }
009: 정적 공용 암시적 연산자 RomanNumeral(int 값)
010: {
011: 새 RomanNumeral(값) 반환;
012: }
013: 정적 공용 명시적 연산자 int (RomanNumeral roman )
014: {
015: return roman.value;
016: }
017: 정적 공용 암시적 연산자 문자열(RomanNumeral roman)
018: {
019 : return( "변환이 아직 구현되지 않음");
020: }
021: 비공개 int 값;
022: }
023:
024: 클래스 테스트
025: {
026: static public void Main()
027: {
028: 로마 숫자 숫자;
029:
030: 숫자 = 10;
031:
032: / / 숫자에서 int033으로의 명시적 변환: Console.WriteLine((int)numeral);
034:
035: // string036으로의 암시적 변환: Console.WriteLine(numeral);
037:
038: // 명시적으로 int로 변환된 후 명시적으로 short로 변환됨040: short s = (short)numeral;
041:
042: Console.WriteLine(s);
043:
044: }
045: }
이 예의 출력은 다음과 같습니다.

10

변환이 아직 구현되지 않았습니다
10
009 및 013 연산자의 연산자 작업에 유의하세요. 변환 연산자 정적 공용 명시적 연산자 int(RomanNumeral roman), 이 형식을 기억하세요. 이는 변환을 나타냅니다. 033행을 다시 보면 int 변환이 이전에 명시적으로 선언되었기 때문입니다. 즉, 이 변환을 사용할 때, 괄호를 사용해야 합니다.

아래 예는 RomanNumeral과 BinaryNumeral이라는 두 개의 구조를 선언한 다음 이들 사이를 변환합니다.

000: // UserConversionsstructconversion.cs

001 : System;
002:
003: struct RomanNumeral
004: {
005: public RomanNumeral(int value) { this.value = value }
006: 정적 공용 암시적 연산자 RomanNumeral(int 값)
007: {return new RomanNumeral(value);}
008: 정적 공용 암시적 연산자
009: RomanNumeral(BinaryNumeral 이진)
010: {return new RomanNumeral((int )binary);}
011: 정적 공용 명시적 연산자 int(RomanNumeral roman)
012: {return roman.value;}
013: 정적 공용 암시적 연산자 문자열(RomanNumeral roman)
014: {return("변환이 아직 구현되지 않음");}
015: private int value;
016: }
017:
018: struct BinaryNumeral
019: {
020: public BinaryNumeral(int value) {this.value = value;}
021:
022: 정적 공용 암시적 연산자 BinaryNumeral(int value)
023: {return new BinaryNumeral(value);}
024: 정적 공용 암시적 연산자 문자열(BinaryNumeral 바이너리)
025: {return("변환이 아직 구현되지 않음");}
026: 정적 공용 명시적 연산자 int(BinaryNumeral 바이너리)
027: {return( 바이너리.값);}
028:
029: 비공개 int 값;
030: }
031:
032: 클래스 테스트
033: {
034: 정적 public void Main()
035: {
036: RomanNumeral roman;
037: roman = 10;
038: BinaryNumeral 바이너리;
039: 바이너리 = (BinaryNumeral)(int)roman ;
040: 로마자 = 바이너리;
041: Console.WriteLine((int)바이너리);
042: Console.WriteLine(바이너리);
043: }
044: }
이 예제의 출력은 다음과 같습니다.

10

변환이 아직 구현되지 않았습니다
직접 변환이 제공되지 않기 때문에 039행은 RomanNumeral에서 BinaryNumeral로 변환되지 않습니다. 먼저 RomanNumeral을 int로 변환한 다음 BinaryNumeral로 변환합니다. 나머지는 위의 예와 동일합니다(적어도 그렇게 생각합니다). 위의 예를 이해하면 다음과 같습니다. 위 내용은 SUNWEN 튜토리얼 - C# Advanced (9) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿