2012-10-24 3 views
6

최근에 C# 팀에서 vb.net 팀으로 전환했습니다. 내가 답을 찾을 수 없었던 것 중 하나는 컴파일 오류/옵션의 차이입니다. 설명하겠습니다.VB.NET에서 오류가 발생하지 않는 이유

C#에서는 잘못된 유형을 템플릿과 같은 클래스에 전달하려고 할 때 컴파일 타임 오류가 발생합니다. 여기에 문자열 형식의 Animal을 만들고 이후에 datetime을 전달하면 컴파일 오류가 발생합니다.

IAnimal<string> animal = new Animal<string>(); 
animal.SetTrainer(DateTime.Now); 

"Option Strict"로 vb.net에서 동일한 컴파일 시간 오류가 발생합니다. 그러나 "Option Strict"로 컴파일하지 않는 동일한 파일에는 많은 레거시 (VB) 코드가 있습니다. 내가 가질 수있는 옵션은 무엇입니까? 내 생각 :

  1. "Option Strict"로 전환하고 모든 오류를 수정하십시오. 시간이 좀 걸리고 작업 코드가 손상 될 수 있습니다.
  2. 제네릭의 컴파일 시간을 확인할 수있는 대안이있을 수 있습니다. 모든 제네릭이 오히려 새로운 것이므로 항상 이것을 강요하는 방법이있을 것입니다.
  3. ? 사전에

감사

답변

6

두 프로젝트를 클릭 - 내 프로젝트>.

고토 컴파일하고 지금 당신은 몇 가지 설정을 변경할 수 있습니다

Warningconfiguration

를 찾습니다.

  • 암시 적 캐스트
  • 늦은

그들에게 오류하지만 경고를하지 않는 바인딩.

컴파일 할 때 오류가 발생하지 않지만 최소한 경고가 표시 될 수 있습니다.

또 다른 해결책은 클래스를 부분 클래스로 만들고 코드를 새 파일로 옮기는 것입니다. Option Strict/Option Explicit은 파일 단위로 설정할 수 있습니다.

+5

+1 매우 동의합니다.하지만이 점에 대해 마음 먹으면 ** 프로젝트 레벨에서 Option Strict를 켜고 ** 각 옵션에 ** Option Strict Off를 추가하면 ** 그것 없이는 컴파일되지 않습니다. 단계별로 기존 코드를 리팩터링하는 작업을 수행합니다. –

+0

의견을 보내 주셔서 감사합니다. 내 팀 – Flodpanter

+0

@ Adriano, +1과 의논 해 보겠습니다. 아마도 가장 좋은 해결책 일 것입니다. –

3

"Option Strict"로 전환하고 모든 오류를 수정하십시오. 시간이 좀 걸리고 작업 코드가 손상 될 수 있습니다.

예, 그렇게하십시오. 그것은 당신이 온전하게 남아있게 도와 줄 것입니다.

대부분의 오류는 쉽게 캐스팅 할 수있는 문제이며 수정하기 쉽습니다 (CInt 여기, ToString() ...).

Option Strict On을 파일 수준에서 활성화 할 수 있기 때문에 전체 솔루션이나 프로젝트를 즉시 수정하지 않아도됩니다. 당신이 만져야 할 모든 파일을 고칠 좋은 습관을 만드십시오.

이것은 항상 가능하지는 않지만 변경 사항을 적용하지 않고 Option Strict On (예 : COM) 등의 파일을 다른 파일로 많이 옮기는 코드로 이동할 수 있습니다.

+0

감사. 나는 "Option Strict"가 갈 길이 란 것에 전적으로 동의합니다. 이제 우리 팀을 설득해야만합니다 :-) – Flodpanter

+0

+1 각 오류를 찾아서 수정하십시오. – MarkJ

관련 문제