-
Unity에서 .NET 4.x 사용안 했던 이유 및 새로운 기능일지 2019. 11. 26. 18:47
많은 회사에서 .NET 4.x를 사용하지 않는데 물어보기 뭐해서 검색해보니 MSDN에서 해당 사유를 알 수 있는 글을 발견할 수 있었다.
사용안 한 이유)
위 정보를 읽어보면 유니티 2017버전 이전에는 NET 4.x 버전을 아예 지원하지 않았고 2017버전에 들어와서 실험적으로 도입하기 시작했다는 것을 알 수 있다.
그렇기에 회사들이 .NET4.x를 사용하지 않았던 것은 기존에 2017버전보다 낮은 버전을 사용했기 때문이기도하고 2017을 썼다 하더라도 실험적인 기능을 제품에 적용하기는 어려웠던 것으로 보인다.
유용한 기능)
.NET4.x로 넘어오면서 편리한 기능들이 생겼다.
1. auto 이니셜라이저
// .NET 3.5 public int Health { get; set; } // Health has to be initialized somewhere else, like Start() // .NET 4.x public int Health { get; set; } = 100;
2. 문자열 보간
// .NET 3.5 Debug.Log(String.Format("Player health: {0}", Health)); // or Debug.Log("Player health: " + Health); // .NET 4.x Debug.Log($"Player health: {Health}");
3. 식 본문 멤버
// .NET 3.5 private int TakeDamage(int amount) { return Health -= amount; } // .NET 4.x private int TakeDamage(int amount) => Health -= amount;
4. nameof 연산자
// Get the string name of an enum: enum Difficulty {Easy, Medium, Hard}; private void Start() { Debug.Log(nameof(Difficulty.Easy)); RecordHighScore("John"); // Output: // Easy // playerName } // Validate parameter: private void RecordHighScore(string playerName) { Debug.Log(nameof(playerName)); if (playerName == null) throw new ArgumentNullException(nameof(playerName)); }
5. Null 조건부 연산자
// .NET 3.5 auto temp = PropertyChanged; if(temp != null) temp.Invoke(); // .NET 4.x PropertyChanged?.Invoke();
위 기능들은 곧바로 적용할 수 있고 편히할 것으로 생각되는 것들을 모아본 것이다.
이 외에도 많은 기능들이 추가되었으며 궁금한 경우 MSDN을 참고하기 바란다.