Nice programing

리프팅 운영자는 무엇입니까?

nicepro 2020. 12. 29. 08:26
반응형

리프팅 운영자는 무엇입니까?


나는 이 기사를 보고 있었고 리프팅 된 연산자를 설명하는 VB.NET 예제를 따르기 위해 고군분투하고 있습니다. 동등한 C # 예제 또는 자습서가없는 것 같습니다. 일반적으로 연산자 오버로딩에 대한 경험이 많지 않으므로 Nullable 형식을 읽는 동안 VB.NET에 해당하는 용어를 사용하려는 것은 아마도 시작하기에 가장 좋은 곳이 아닙니다.

해제 된 연산자에 대한 설명과 nullable 형식에서 사용하는 방법에 대한 설명을 제공 할 수 있습니까? nullable 형식 자체가 연산자를 오버로드하지 않고 나타내는 기본 형식의 연산자를 사용한다는 의미입니까?

들어 올린 연산자에 대한 정보가 많지 않은 것 같으므로이 정보가 다른 사용자에게도 도움이되기를 바랍니다.


해제 된 연산자는 nullable이 아닌 형식에 이미 존재하는 연산자를 "리프팅"하여 nullable 형식에 대해 작업하는 연산자입니다. 예를 들어 다음과 같이하면됩니다.

int? x = 10;
int? y = 10;
int? z = x + y;

"+"연산자가 해제됩니다. 실제로 존재하지는 않지만 Nullable<int>C # 컴파일러는 존재 하는 것처럼 작동하여 올바른 작업을 수행하는 코드를 생성합니다. (대부분의 경우 피연산자가 null인지 여부를 확인하는 문제입니다. 그렇다면 결과는 null입니다. 그렇지 않으면 두 피연산자를 모두 nullable이 아닌 값으로 래핑 해제하고 일반 연산자를 사용한 다음 결과를 다시 래핑합니다. nullable 값. 비교와 관련된 몇 가지 특별한 경우가 있습니다.)

자세한 내용은 C # 사양의 섹션 6.4.2 (리프트 된 변환 연산자) 및 7.3.7 (리프트 된 연산자) 을 참조하십시오.


리프트 연산자를 사용하면 nullable이 아닌 형식에 대해 작동하는 미리 정의 된 사용자 정의 연산자를 해당 nullable 형식에도 사용할 수 있습니다.

int i = 5;
int? j = 6;

int? k = j + i;    // 11
int? q = i + null; // null - Shows a warning the result of the expression is always null of type int?
int r = i + null; // Throws an error the result of expression is always null of type int?

참조 URL : https://stackoverflow.com/questions/3370110/what-are-lifted-operators

반응형