VB는 대소 문자를 구분하지 않습니다.
Visual Basic은 대소 문자를 구분하지 않습니다. (그리고 무엇이든 좋은 것입니다).
그러나 내 질문은 다음과 가변합니다. Visual Basic 대소 문자를 정확히 구분하지 않는 곳은 어디입니까? 입력 할 때 ...
Dim ss As String
Dim SS As String
... Visual Studio 2008 또는 Visual Studio 2010 IDE에서 두 번째는 " 현재 변수 SS
에 로컬 변수 가 이미 선언되어 있습니다 "라는 경고가 표시 됩니다. VBA VBE에서는 즉시 오류가 발생하지 않지만 대신 자동 수정됩니다.
Visual Basic이 대소 문자를 구분하지 않는다는 것이 주장과 함께 여기에 뭔가 빠입니까? (아니라면 아니면 안된다면?)
왜이 질문을 질문합니까?
저는 수년간 많은 방언에서 Visual Basic을 사용했습니다. 거기 취미로, 작업 그룹의 소규모 비즈니스 관련 프로그램에 사용되기도했습니다. 지난 6 개월 동안 저는 예상보다 훨씬 큰 프로젝트를 진행하고 있습니다. 많은 샘플 소스 코드가 C #에 있습니다. C #을 배우려는 욕망은 없지만 Visual Basic이 제공하지 않는 C # 제안 (VB.NET은 XML 리터럴 제공 )에서 누락 된 것들이 있습니다. 해당 기능에 대해 더 많이 알고 싶습니다. 따라서이 경우 C 언어는 대 / 소문자를 구분하며 양호하며 Visual Basic은 잘못 대 / 소문자를 구분하지 않습니다. 알고 싶습니다 ...
- 코드 편집기의 모든 단일 예제는 내가 원하든 요소 든 대소 문자를 구분하는 데소 문자를 정확히 구분하지 않습니다.
- VB.NET 사례가 어떻게 든 코드로 할 수있는 작업을 제한하는 경우 C #으로 전환하는 것이 좋을까요?
VBA와 VB.NET 의 차이점은 VB.NET 이 백그라운드에서 경험하기 때문입니다. VBA를 사용할 때 오류가 발생합니다.
많은 조나단 말한다 프로그래밍 할 때, 당신은 대소 문자를 구분할 수있는 비교, XML, 그리고 몇 가지 다른 상황에서 떨어져로 VB.NET 생각할 수 ...
나는 당신이 후드 아래에있는 관심이 있다고 생각합니다. .NET 공용 언어 런타임은 대소 문자를 구분 하고 VB.NET 코드는 런타임에 런타임 운영시 변수 및 메소드를 사용할 때 대소 문자를 구분해야 함을 알 수 있습니다.
VB.NET 컴파일러와 편집기는 코드 에서 대소 문자 를 수정하여 무시해도 됩니다.
동적 기능이나 늦게 바인딩 (Option Strict Off)을 사용하는 경우 기본 실행이 대 / 소문자를 구분한다는 것을 증명할 수 있습니다. 또 다른 방법은 C #과 같이 대소 문자를 구분하는 언어는 동일한 실행을 사용하는 실행은 대소 문자를 분명히 지원한다는 것입니다.
편집 방정식에서 IDE 꺼내려면 언제든지를 명령 줄에서 컴파일 할 수 있습니다 . 의 코드를 당신 수정 메모장 이 가지고 있도록 ss
하고 SS
컴파일러가 무엇을 참조하십시오.
.NET Framework 디자인 지침 페이지 45 의 Jeffrey Richter의 인용문 편집
분명히, CLR은 실제로 대소 문자를 구분합니다. Visual Basic과 같은 일부 프로그래밍 언어는 대소 문자를 구분하지 않습니다. Visual Basic 컴파일러가 C #과 같이 대 / 소문자를 구분하는 언어로 정의 된 형식에 대한 메서드 호출을 해결하려고 할 때 CLR이 아닌 컴파일러는 메타 데이터에 포함됩니다. CLR은 이에 대해 아무것도 마찬가지입니다. 리플렉션을 사용하여 메소드에 바인딩하는 경우 리플렉션 API는 대소 문자를 구분하지 않는 검색 기능을 제공합니다. 이것은 CLR이 대소 문자를 구분하지 않는 정도입니다.
여기서 문제의 일부는 언어를 IDE 경험과 구분해야한다는 것입니다.
언어로서 VB.NET 은 식별자와 관련하여 대소 문자를 구분하지 않습니다. 호출 DateTime.Parse
하고 datetime.parse
정확히 동일한 코드에 바인딩합니다. 그리고 C #과 같은 언어와 달리, 대소 문자 만 다른 메소드 나 유형을 정의 할 수 없습니다.
IDE로서 VB.NET은 코드 블록을 사용할 때 기존 식별자를 시도합니다. 현재 논리 코드 줄을 때마다 예쁜 목록이 나타납니다. 이 경우 SS
, 예쁜 리스터 는의 두 번째 선언에서 벗어나 해당의 기존 식별자가 있음을 확인하고 대소 문자가 일치하도록 수정합니다.
그러나이 동작은 순전히 사용자 값 추가로 수행됩니다. 핵심 언어의 일부가 아닙니다.
VB는 대부분 의 경우에는 분리되어 있습니다. 예를 들어 XML 리터럴과 이해는 대소 문자를 구분합니다. 일반적으로 T-SQL과 달리 대소 문자를 구분하지 않는 비교는 일반적으로 T-SQL과 달리 대소 문자를 구분하지 않는 컴파일러 스위치가 있습니다. 물론 상속, COM 및 동적 언어 실행을 가장 중요한 경우에 있습니다.
예, VB.NET 컴파일러는 대소 문자를 구분하지 않고 식별자를 처리합니다. 그리고 다른 언어로 어셈블리를 사용할 때 사용하거나 보관할 수 있습니다. 전자의 경우에는 공용 언어 사양 이 적용 됩니다. 관련 규칙은 다음과 달라집니다.
두 식별자를 구별 할 것이어야 할 대 / 소문자를 구분해야합니다.
COM 케이스는 유형 라이브러리 빌더에 의해 생성되고 처리 이름을 가진 식별자의 케이스가 동일하도록 강제합니다. 이러한 식별자가 다른 역할을하는 경우에도 마찬가지입니다. 다시 말해, 이름이 "index"인 메소드 변수는 메소드 이름 "Index"를 "index"로 다시 강제합니다. 그것은 당신이 상상할 수있는 많은 헤드 스크래치를 생성했습니다. :)
VB는 대소 문자를 보존 하지만 (IDE에서) 대소 문자를 구분하지 않습니다 . 어떤 식 으로든 Windows 파일 시스템과 가변합니다. Hello.txt와 hello.txt는 동일한 파일 이름으로 발송됩니다.
IDE는 변수 선언이 해당 변수에 대한 "올바른"경우라고 가정하고 해당 변수의 모든 인스턴스가 선언과 일치하도록 조정합니다. 그것은 눈의 사탕과 일관성을 M하지만 기능은 아닙니다.
케이스가 선언과 일치하지 않습니다. 자동으로 변경되지 않은 몇 가지 인스턴스를 실행합니다. 텍스트 편집기를 사용하여 다른 경우에 사용할 수있는 코드를 사용할 수도 있습니다.
부가 정보 :
대부분의 사람들 은 대소 문자를 구분하지 않습니다. 우리가 "개"라는 단어를 볼 때 그 단어는 우리 마음에 의미로 번역됩니다. 단어의 의미는 대소 문자를 기준으로하지 않습니다 (즉, 철자가 "DOG", "DoG"또는 "dOG"인 경우에도 여전히 짖습니다). 컴퓨터 는 단어를 단어를 사용하는 비트 백으로 제공됩니다. 대문자와 소문자는 서로 다른 비트 패턴 서로 출시됩니다.
대부분의 프로그래머는 인간이기 때문에 대소 문자 구분은 사람들이 생각하는 방식에 더 적합하게 것 대소 문자 구분은 기계의 제약 조건에 어떻게 생각하는지 적응시키는 인간에 관한 것입니다.
Visual Basic 은 대소 문자를 구분하지 않는 언어입니다. 그래서 ss
와 SS
동일합니다.
자세한 내용은 VB.NET 기본 안내를 참조하십시오. :)
잘 모르겠어요? VB는 대소 문자를 구분하지 않습니다. ss와 SS는 하나의 변수 컴파일러는 변수를 다시 선언하고 불평합니다.
변수는 대소 문자를 구분하지 않지만 이름은 대소 문자를 구분합니다.
예, VB는 대소 문자를 구분하지 않습니다. 약간의 약간의 루프를 위해 익숙하지 않은 것을 던집니다.
VB.NET에서는 식별자의 대문자 / 소문자 "맞춤법"이 다른 코드를 만들기 위해 모든 노력을 기울이지 않습니다. "이름없는"이름 기능을 사용하지 않고 선언 된 파일에서 식별자의 대소 문자를 변경해도 이름이 포함 된 행을 편집하면 현재 정의를 준수하게되었습니다.
VB.NET이 대소 문자를 구분하지 않는다고 판단 할 수 있습니다 CLR에서 식별자를 대 / 소문자를 구분하여 사용할 수 있습니다.
80 년대 초의 프로그래밍 교과서에서 기억 하듯이, 거기에는 감각적 언어가있는 시간을, 엄격하게 의도 된 것입니다. 즉, "엄격 성"은 코딩 분야를 개발하기위한 것입니다. 변수, 클래스, 메소드, 함수 및 거기에 던지고 싶은 것들에 대한 적절한 레이블링이 추가됨에 따라 진화했습니다.
나는 그 책들 대부분이 대문자 사용, 소문자 등을위한 권장되는 패턴을 포함하고 것을 기억합니다. 우리 모두를 알고, 그 대부분은 버리거나 말해야 할 것입니다. 무시하고, 고급 생산 주택을 위해 저축하고, CASE 솔루션 또는 더 높은 기술 수준에 도달 한 솔루션 모든 사람들이 학습 곡선을 경험하게 생각합니다.
현재 언어와 IDE가 발전에 따라 어느 언어가 개발 시간을 향상시킬 수 있는지가 더 좋은 질문이됩니다. 물론 다양한 언어에 익숙하지 않은 경우 옵션이 제한됩니다.
나는 당신의 두 번째 질문에하려고 노력할 것입니다.
"VB.NET 사례가 코드로 수행 할 수있는 작업을 제한하는 경우 C #으로의 전환을 고려할 경우 충분할까요?"
C #을 사용하여 WCF 웹 서비스를 작성하십시오. DataContract (1 클래스)를 작성하십시오. 하나는 "문자열 이메일"속성입니다. 다른 속성으로 "문자열 이메일"이있는 다른 항목. 개인 이메일 또는 사무실 이메일로 이해하기로 선택했습니다. 또는 두 개의 다른 DataContracts가 있습니다.
C #의 경우 괜찮습니다. 웹 서비스가 잘 작성되었습니다. AC # 프로그램은 WSDL을 쉽게 만들 수 있으며 모든 것이 정상입니다.
이제 VB (모든 버전)로 WSDL을 작성하십시오. "이메일"이 이미 항상 약속 WSDL 생성에 실패했음을 나타냅니다.
모든 사람들과 많은 사람들이 VB 언어의 단점이라고 생각했습니다. 하지만 !!!
FxCOP를 사용하여 원래 C # 코드를 분석하십시오. FxCOP는 이메일 / 이메일 사용이 문제라고 사실입니다. 대소 문자를 구분하지 않는 것이 좋습니다. 또한 .NET 프레임 워크에는 106 개의 프로그래밍 언어가 언어 대 / 소문자를 구분하는 많은 언어가 있습니다. 우리는 모두 클라우드로 나아가고 모든 프로그래밍 플랫폼 / 언어가 서비스에 액세스 할 수 있기 때문에 바랍니다.
대소 문자를 구분하는 것은 프로그램 내에서 선택하는 C 사람이라면 원할 것입니다. C 이외의 다른 프로그램에서 프로그램을 사용 / 액세스하려는 경우 대소 문자 구분을 지원해야하지만 언어를 선택하십시오.
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET http://www.vbrad.com/article.aspx?id=65
[예 : 로컬 배포 필드]도 대소 문자를 구분하지 않습니다.
예를 들면 다음과 같습니다 .
Public Class C
Public Name As String
Public Function M(name As String) As Boolean
Return String.Equals(name, Name) ' case differs
End Function
End Class
VB.NET 컴파일러의 출력은 다음 C #으로 디 모두 동등합니다.
public class C
{
public string Name;
public bool M(string name)
{
return string.Equals(name, name); // both lowercase
}
}
string.Equals
필드가 두 번 전달됩니다. 지역은 사건에 관계없이 숨겨져 있습니다. 언어는 대소 문자를 구분하지 않습니다.
이 필드와 같은 멤버를 명시 적으로 참조하려는 Me
다음을 통해 멤버를 역 참조해야합니다 .
Return String.Equals(name, Me.Name) ' differentiate field from local
마지막에 명시 적 두 번째 질문에 대해 언급하지 않았습니다. "2 : VB.NET 사례가 어떻게 코드로 수행 할 수있는 작업을 제한하는 경우 C #으로 전환하는 것이 좋을까요?"
프로그래머가 옵션을 제한하는 것보다 C #에서 프로그래머가 선택할 수있는 더 많은 옵션 접근을 선호합니다. 나는 C #을 선호하지만 대소 문자만으로는 대소 문자를 구분하기 때문에 언어를 선호한다고 생각합니다. 모든 기능이 중요하며 C #과 VB.NET의 장점을 볼 때 C #을 선호합니다. 그러나 나는 당신에게 진정한 균형 잡힌 관점을 제공 할 것입니다. 그렇습니다. 왜냐하면 선호도가 있기 때문입니다. 그러나 C #의 단점에 솔직합니다.
첫째, 두 언어 모두 장단점이 있습니다. 고맙게도 Microsoft가 두 언어를 모두 개선하고 두 언어 중 어느 하나에 불공평 한 부분을 지나지 않는 것처럼 보일 수 있습니다.
C #이 처음 나왔을 때 VB는 C #에서 좋아했던 메소드를 넣을 XML 주석이 없습니다. 나는 VB.NET에서 그것을 싫어했다. 그러나 몇 년 동안 한 언어로되어 있지 않은 많은 기능이 다른 언어에 추가되는 것을 보았습니다. (동일한 MS 개발자 팀이 C #과 VB 모두 개발 기능이 유사하게해야합니다.)
하지만 당신은 VB가 가지고 있지 않은 C #을 요구했습니다. 여기 내가 즉시 생각할 수있는 몇 가지 가지가 있습니다.
1 : C #은 더 간결하고 타이핑이 덜합니다. 많은 방법으로! VB가 타이핑을 저장한다고 주장이 제기 될 때 어리석은 말을 보았습니다. 그러나 두 언어를 모두 사용하는 말하는 사람들의 말을 들어 있습니다. 나는 C # 과 VB, C #은 집에서 좋아하기 때문에 (그리고 직장에서 C #으로 작업 할 때) C #이 아닌 VB를 사용하는 최신 작업 요청입니다. 그래서 지금 (약 10 개월 동안) VB를 더 자주 사용하고 개인 간증에서는 C #을 훨씬 선호하며 실제 타이핑에서 VB는 훨씬 더 타이핑입니다. 한 가지 예는 with with long 변수가있는 'with ...'예제를 제공하는 것 누군가 VB에서 '.property'를 사용할 수 있습니다. 이것은 VB가 타이핑을 덜해야한다고 주장하는 어리 석음입니다. VB가 짧은 몇 가지 (이 더 간결한 경우가 C #이 더 간결한 경우).
하지만 C #이 더 간결한 생각하는 가장 큰 이유는 VB의 더 많은 "IF / THEN"문입니다. 일반적이라면 C #에는 입력 할 '다음'단어가 없습니다! :) 또한 모든 'end ...'문은 C #에서 일반적으로 하나의 닫히는 중괄호 '}'인 타이핑을 사용합니다. 일부 사람들은 VB.NET 에서이 장황함이 VB의 이점이라고 주장했습니다. 몇 가지 폐쇄 블록 문 / 기호가 중첩되어 서로 바로 옆에 있기 때문에 동의하지 않습니다. 다음 코드 개정이 더 잘 설계 될 수 있기 때문에 다른 프로그래머보다 C # 또는 VB에서 프로그램을 더 잘 수 있습니다. 다중 중첩 된 블록이 여러 중첩 된 IF와 같은 유형 인 경우 'C #에서 혼동하는 수많은 중첩은 중괄호'에 적용되고 VB는 C #에서와 동일한 문제를 여러 중첩됩니다. VB에서는 이점이 없습니다. 이 상황은 정확하게 내가 닫는 상징이나 문은 두 언어로 무엇을 말하는지 언급하고 싶은 것입니다. 그렇습니다.이 방법은 더 장황하지만 어느 언어로든 명확하게 선택할 수있는 옵션이 있습니다. 이는 판단에 따라 상황에 따라 달라집니다. 코드 선명도가 매우 중요하다고 생각합니다.
2 : VB에는 여러 줄 주석이 없습니다. 내가 VB와 일할 때 나는 신경 쓰지 않았다. 그런 다음 몇 가지 C 스타일 언어를 사용했습니다. 지금은 주로 직장에서 VB.NET을 사용하고 있고 싶습니다. 그것은 당신이 편리하다고 생각하고 잃어버린 것입니다. :(
3 : VB의 'andalso'와 'orelse'는 C #에서 글자 '&&'와 '||'만 입력하면 성가시다. 다시 입력이 유효합니다. 이 VB와 C # 모두에서 내 코드에서 드물지. 기능에있어 'OR'대 'OrElse'가 컴퓨터에서 'OrElse'가 더 빠르다는 것을 제외하고는 일반적으로 중요하지 않은 프로그래머가 VB에서 'Or'와 'And'를 사용하면 최적의 코드를 덜 생성합니다 . 코드의 명확성을 좋아하는 사람. 'Or'는 'OrElse'보다 탈지하기가 부담 스럽습니다.
4 : C #의 코드 배치 유연성이 향상되었습니다. 줄이 길고 다음 줄에 줄 바꿈하려는 경우 VB.NET의 '제어'가 내 코드를 다시 조정하는 것을 싫어합니다. C #은 약간하지만 C #에서는 더 유용합니다. VB에서는 훨씬 더 제어가 가능합니다. 그러나 이것은 자체가 아니라 VB.NET IDE 대 C # IDE에 가깝습니다. 그러나 IDE 차이점없이 언어 기능을 모두 또는 순수하게 원하는지 모르겠습니다.
5 : 내가 가족 놓친 것은 C #에서 새로운 코드 블록을 만드는 것입니다. 메소드에서 많은 일이있을 수 있고 매우 작은 코드 블록에서 변수를 선언하고 싶지만 해당 블록 외부에서 변수를 선언하고 싶지 않습니다. 전체 방법. C #에서는 '{'로 새 블록을 만들고 '}'로 끝낼 수 있습니다. VB에는 기능이 없지만 가장 일치하는 것은 무조건적인 'If True Then'과 'End If'블록입니다. (2 문자 C # 대 18 문자 VB.NET에 다시 해당합니다 ... VB 입력에 대한 자세한 내용 참조)
6 : 자기 증가 및 감소 연산자 : ++와-같이 myVariable++
동등한 ++myVariable
또는 동등한 버전. 이것은 매우 편리합니다 ... 다음은 C #을 크게 놓쳤을 때 실제 코드의 예입니다.
// C#:
while (txt.Length > x)
{
thisChar = txt[x];
if (charsAllowedWithoutLimit.Contains(thisChar)) { ++x; }
else if (allowLettersWithoutLimit && char.IsLetter(thisChar)) { ++x; }
else if ((x2 = charsAllowedWithLimit.IndexOf(thisChar)) >= 0)
{
++x; if (++usedCountA[x2] > charAllowedLimit[x2]) { break; }
}
else { break; }
}
' VB.NET:
While (txt.Length > x)
thisChar = txt(x)
If (charsAllowedWithoutLimit.Contains(thisChar)) Then
x += 1
ElseIf (allowLettersWithoutLimit AndAlso Char.IsLetter(thisChar)) Then
x += 1
Else
x2 = charsAllowedWithLimit.IndexOf(thisChar)
If (x2 >= 0) Then
x += 1
usedCountA(x2) += 1S
If usedCountA(x2) > charAllowedLimit(x2) Then Exit While
Else
Exit While
End If
End If
End While
그리고 C # 규칙이있는 아주 좋은 예 제시하기 위해 최근에 개인적으로 코드가 더 많은 경우.
// C#
public static bool IsNotWithin(this Byte v, Byte v1, Byte v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this SByte v, SByte v1, SByte v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this Int16 v, Int16 v1, Int16 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this Int32 v, Int32 v1, Int32 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this Int64 v, Int64 v1, Int64 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this UInt16 v, UInt16 v1, UInt16 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this UInt32 v, UInt32 v1, UInt32 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this UInt64 v, UInt64 v1, UInt64 v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsNotWithin(this Decimal v, Decimal v1, Decimal v2) { return (v1 > v && v < v2) || (v2 < v && v > v1); }
public static bool IsWithin(this Byte v, Byte v1, Byte v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this SByte v, SByte v1, SByte v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this Int16 v, Int16 v1, Int16 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this Int32 v, Int32 v1, Int32 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this Int64 v, Int64 v1, Int64 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this UInt16 v, UInt16 v1, UInt16 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this UInt32 v, UInt32 v1, UInt32 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this UInt64 v, UInt64 v1, UInt64 v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
public static bool IsWithin(this Decimal v, Decimal v1, Decimal v2) { return (v1 <= v && v <= v2) || (v2 <= v && v <= v1); }
' And the VB equivalent is a mess! Here goes:
<Extension()>
Public Function IsNotWithin(v As Byte, value1 As Byte, value2 As Byte) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
<Extension()>
Public Function IsNotWithin(v As SByte, value1 As SByte, value2 As SByte) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
<Extension()>
Public Function IsNotWithin(v As Int16, value1 As Int16, value2 As Int16) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
' the % suffix means 'As Integer' in VB.
<Extension()>
Public Function IsNotWithin(v%, value1%, value2%) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
' the & suffix means 'As Long' in VB.
<Extension()>
Public Function IsNotWithin(v&, value1&, value2&) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
<Extension()>
Public Function IsNotWithin(v As UInt16, value1 As UInt16, value2 As UInt16) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
<Extension()>
Public Function IsNotWithin(v As UInt32, value1 As UInt32, value2 As UInt32) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
<Extension()>
Public Function IsNotWithin(v As UInt64, value1 As UInt64, value2 As UInt64) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
' the @ suffix means 'As Decimal' in VB.
<Extension()>
Public Function IsNotWithin(v@, value1@, value2@) As Boolean
Return (value1 > v AndAlso v < value2) OrElse (value2 < v AndAlso v > value1)
End Function
<Extension()>
Public Function IsWithin(v As Byte, value1 As Byte, value2 As Byte) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
<Extension()>
Public Function IsWithin(v As SByte, value1 As SByte, value2 As SByte) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
<Extension()>
Public Function IsWithin(v As Int16, value1 As Int16, value2 As Int16) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
' the % suffix means 'As Integer' in VB.
<Extension()>
Public Function IsWithin(v%, value1%, value2%) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
' the & suffix means 'As Long' in VB.
<Extension()>
Public Function IsWithin(v&, value1&, value2&) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
<Extension()>
Public Function IsWithin(v As UInt16, value1 As UInt16, value2 As UInt16) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
<Extension()>
Public Function IsWithin(v As UInt32, value1 As UInt32, value2 As UInt32) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
<Extension()>
Public Function IsWithin(v As UInt64, value1 As UInt64, value2 As UInt64) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
' the @ suffix means 'As Decimal' in VB.
<Extension()>
Public Function IsWithin(v@, value1@, value2@) As Boolean
Return (value1 <= v AndAlso v <= value2) OrElse (value2 <= v AndAlso v <= value1)
End Function
아마도 이것은 C #이 더 간결한 아마도 증거입니다. 그러나 모든 프로그래머가 간결함을 좋아하는 것은 아닙니다. 어떤 사람들은 "if a <b then ..."을 읽는 것을 선호합니다. 따라서 언어는 더 자연 스럽기 때문입니다. 그리고 그것은 괜찮습니다. 환경 설정은 괜찮습니다. 나를 위해, 손 노력은 i 값의 요소이며, "if"와 "then"은 알파벳의 상징이고 C #의 "if (조건) 의미"이기 때문에 누구나 원하는 기호로 생각합니다. 구문도 기호입니다. 하나는 다른 것보다 비 프로그래머의 구문에 더 가깝습니다. 간결한 것을 선호합니다.
또한 VB에서 문자 리터럴 뒤에 'c'를 사용하여 문자열이 아닌 문자 리터럴로 만들 필요가 있다고 생각합니다. 나는 C #의 간결함을 훨씬 더 좋아합니다. 메서드에 문자 리터럴이 필요한 경우 한 문자 길이의 문자열이 아닌 문자를 제공해야하므로 ":"c
VB 에서는 강제로 사용 하지만 C #에서는 ':'
. 나는 이것이 nit-picking tho라고 생각합니다.
공정하게 말하면 Dim nameUpper$ = name.ToUpperInvariant
C #에 빈 괄호가 필요한 경우 와 같이 메서드 호출 후에 빈 괄호를 넣지 않아도되는 등 VB에 좋아하는 이점이 있다고 말할 것 string nameUpper = name.ToUpperInvariant()
입니다. : 너무 그것을 트리밍과 같이 그 배 Dim nameUpper$ = name.Trim.ToUpperInvariant
대 string nameUpper = name.Trim().ToUpperInvariant()
. $
C #에 바로 가기가없는 경우 'As String'을 어둡게하기 위해 위에서 사용한 방법에 대한 VB의 간결한 사용을 좋아 합니다. VB에는 String, Integer, Long, Decimal, Single 및 Double 유형에 대한 단축키가 있지만 단점은 명확하지 않으므로 신중하게 사용합니다. 그럼에도 불구하고 간결한 코드를 선호합니다.
글쎄, 그것은이 노련한 프로그래머의 약간의 이야기 일 뿐이고, 내가 생각하기에 이것은 C # 대 VB에 대한 나의 프로그래밍 '증언'입니다. 제 생각에는 둘 다 좋은 언어입니다. 하지만 예, 저는 여전히 C #을 선호합니다.
추신 평생 프로그래밍을 할 계획 이었기 때문에 가장 효율적인 키보드 인 Dvorak 키보드를 사용하여 타이핑하는 법을 다시 배웠습니다. 쿼티 키보드보다 영어를 입력하는 데 약 1/3이 소요됩니다. 찾아보세요. 당신도 전환하고 싶을 수도 있습니다. ;) 타이핑이 67 % 더 쉬워졌습니다! :) 나는 누구나 틀 밖에서 생각하고 작업의 효율성을 평가할 것을 권장합니다. Dvorak Simplified Keyboard Layout과 C #이이 작업을 수행했습니다. :)
PSS는 Qwerty 키보드 레이아웃과 VB를 Empirial 측정과는 반대로 Dvorak과 C #을 미터법과 비교할 것입니다. Dvorak, 메트릭 및 C #은 '깨끗'합니다. 그러나 VB는 실제로 멀지 않습니다. 그러나 'Or'대 'OrElse'및 'IIF ()'와 같은 이전 VB6 코드 및 이전 .NET 코드와 역 호환 될 필요가 있습니다.
조심스럽게 마무리합니다. 그들이 무슨 말을하는지 잘 모르는 사람들의 말에 귀를 기울이는 것이 더 신중 해지십시오. 모두 VB 및 C #에 대한 단점 모두의 절반입니다 하지더 이상 문제가 없으며 사람들은 여전히 언어에 실제로 존재하는 단점에 대해 무지하다고 게시합니다. 내가 생각할 수있는 가장 좋은 예는 VB에서 삼중 아포스트로피를 사용하거나 C #에서 삼중 슬래시 주석 기호를 사용하는 메서드에 대한 XML 주석입니다. 그러나 어떤 사람이 무지로 말하고 있는지 아니면 경험으로 말하고 있는지 스스로 분별하십시오. 개인적인 간증은 그들이 실제 경험에서 안다는 것을 의미합니다. 그리고 누군가 그것에 대해 많은 경험을 쌓은 후에 귀를 기울이십시오. 저는 C #과 VB에서 10 년 이상의 경험을 가지고 있습니다. 그리고 결론은 이것으로 요약됩니다 : 둘 다 (아주) 좋은 언어입니다. 그리고 대부분의 차이점은 코드를 읽은 후 5 분 이내에 즉시 확인할 수 있습니다. 그러나 예, 다른 기능은 핸디캡을 찾는 데 몇 년이 걸릴 수 있습니다. 그리고 내가 아는 한 가지 핸디캡 (C #에서), 유용 할 실제 상황을 생각조차하지 마십시오. 그래서 아마도 그것은 결국 핸디캡이 아닙니다.
즐거운 코딩 되세요!
VB.NET은 대소 문자를 구분하지 않습니다.
예 :
1.
Dim a As Integer
Dim A as Integer
2.
Sub b()
'Some statement(s) here
End Sub
Sub B()
'Some statement(s) here
End Sub
삼.
Function c() As Integer
'Some statement(s) here
End Function
Function C() As Integer
'Some statement(s) here
End Function
이 모든 코드는 COMPILE-TIME ERROR를 발생 시킵니다.
첫 번째 예에서는 "현재 블록에 로컬 변수 'A'가 이미 선언되어 있습니다."라는 오류가 표시됩니다.
두 번째와 세 번째 예에서는 " 'Public Sub b ()'에 동일한 서명을 가진 여러 정의가 있습니다."라는 오류가 표시됩니다. 및 " 'Public Function c () As Integer'에는 각각 동일한 서명을 가진 여러 정의가 있습니다."
이러한 오류에서 변수 및 프로 시저 / 함수에 대해 다른 위치에서 오류가 발생합니다. 변수의 경우 두 번째 선언에서 오류가 발생하고 프로 시저 / 함수에 대해서는 동일한 코드의 첫 번째 선언 / 정의에서 발생합니다.
사용자가 위의 주석에서 말했듯이 VB.NET 코드는 백그라운드에서 지속적으로 확인 및 / 또는 수정됩니다. VS IDE의 "오류 목록"창에서이 오류를 볼 수 있습니다. 그리고 이것은 AN ERROR 이고 NOT A WARNING 이므로 오류가 해결 될 때까지 코드가 컴파일되지 않습니다.
참고 URL : https://stackoverflow.com/questions/2300983/is-vb-really-case-insensitive
'IT' 카테고리의 다른 글
리베이스 후 지점으로 밀 수 없습니다 (0) | 2020.07.19 |
---|---|
이 bash 포크 폭탄은 어떻게 작동 작동? (0) | 2020.07.19 |
동적으로 log4j 로그 레벨 변경 (0) | 2020.07.19 |
기본 습관을 확장하는 것이 왜 나쁜 습관입니까? (0) | 2020.07.19 |
nginx에서 업스트림이란 무엇입니까? (0) | 2020.07.19 |