내 직장에서 C # MVC 웹 앱을 상속했고 다음과 같은 컨트롤러 클래스 내부에 직접 할당이 있습니다.
public class FooController : Controller
{
private IAuthenticationManager AuthenticationManager => HttpContext.GetOwinContext().Authentication;
}
Visual Studio는 "; expected"와 같은 오류로 강조 표시합니다. 그러나 그것은 잘 컴파일되고 실행됩니다. "=>"를 간단한 할당 "="로 변경하면 "An object reference is required for the non-static field bla bla bla ..."오류와 함께 HttpContext가 강조 표시되고 컴파일되지 않습니다.
그래서 여기 제 질문이 있습니다. "=>"연산자를 사용하면 왜 제대로 컴파일되고 작동합니까? 저는 C #을 처음 사용합니다 (Android / iOS 개발에서 시작됨). 그래서 몇 가지를 이해하는 것은 쉽지만 이와 같은 것들은 저를 당혹스럽게합니다.
=>
과제가 아닙니다. C # 6에 추가 된 바로 가기, 구문 설탕이며 "표현 본문 함수 멤버"라고합니다.
다음과 같습니다.
private IAuthenticationManager AuthenticationManager
{
get { return HttpContext.GetOwinContext().Authentication; }
}
편집 : BradleyDotNET에서 의견을 추가하여 대답을 명확히합니다.
더 구체적으로; 초기화시 클래스 멤버에 메서드 반환 값을 할당하려고하지 않고 속성 getter에서 메서드 호출을 반환하기 때문에 할당을 통해 작동합니다 (허용되지 않음).
자세한 내용은 이 MSDN 문서를 참조하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다