문제

무엇을 추론 뒤에 존재하는 만 C#대소문자를 구분합니까?

고 전환 VB.NET 이를 통해 언어의 특징(CCR 및 수확량),그리고 이해 이 뒤에 이 차이를 만들 수 있습의 전환을 더 쉽습니다.

[UPDATE] 잘 나가 급락했습니다.학습 C#되지 않은,특히 하드 간신히 기억 내 C++일에 90 년대 후반 하지만입니다.

의 경우 민감도 짜증나요?리지 않았으면 생각...plus 내가 찾는 것은 그것이 실제로 유리하다.나는 정말 행복 CCR 으로 비동기 조정 프로그래밍 모델을 사용합니다.는 경우에만 했다 더 많은 시간에서는 현재 프로젝트 나는 포트의 코드를 기본으로 C#을 최대한 활용합니다.되지 않을 것이 공평하 나의 클라이언트는 하지만입니다.

평가 현재 프로젝트를 지고 나를 보고 차단하는 스레드에!아!!!

[UPDATE]

잘 나는 프로그램에서는 C#를위한.저는 언어,그리고 정말 정말 싫어 넘 VB(특히 피할 수 없!)

그리고 케이 감도는 일입니까?되지 않는 문제

도움이 되었습니까?

해결책

C#은 CASE 민감한 C 스타일 언어에 이어지기 때문에 사례 민감합니다. 이것은 여기 메모리에서 나온 것입니다 MSDN 링크 지금은 나를 위해 작동하지 않습니다. 나는 확인할 수 없습니다.

또한 이것이 매우 유효한 사용 사례임을 지적하고 싶습니다.

public class Child
{
   private Person parent;
   public Person Parent
   {
      get { return parent;}
   }
}

예, 회원 변수에서 접두사를 사용 하여이 문제를 해결할 수 있지만 일부 사람들은 그렇게하는 것을 좋아하지 않습니다.

다른 팁

그들은 아마도 "우리는 사람들이 한곳에서 약간의 가치를 사용하고 다른 곳에서는 가치를 원하지 않을 것입니다.

사건이 정보를 전달할 수 있다는 사실은 아주 좋은 이유라고 생각합니다. 예를 들어, 컨벤션에 따라 클래스 이름, 공개 방법 및 속성은 컨벤션별 대문자로 시작합니다. 반대로, 필드와 로컬 변수는 소문자로 시작합니다.

몇 년 동안 언어를 사용한 후, 나는 이것을 정말로 즐기게되었고, 단어의 케이싱에서 단순히 정보를 읽을 수있을 때 코드를 읽기가 훨씬 쉽습니다.

그렇기 때문에 사람들이 때때로 이것을하는 이유이며, 의미가 있습니다.

Foo foo = new Foo();

나는 항상 그렇게합니다. 매우 유용합니다. 더 유용한 상황에서 다음과 같이 생각하면 다음과 같이 생각합니다.

Image image = Image.LoadFrom(path);

때때로 인스턴스를 클래스 이름과 같은 것을 인스턴스라고 부르는 것이 합리적이며, 그들을 구별하는 유일한 방법은 케이싱입니다. C ++에서는 사례 감지가 더욱 유용 해지지만 또 다른 이야기입니다. 관심이 있으시면 자세히 설명 할 수 있습니다.

다음 의사 코드의 변수 이름을 고려하십시오.

class Foo extends Object { ... }
...
foo = new Foo();

사례 민감도를 갖는 것은 클래스 이름과 인스턴스를 분리하기 위해 사례를 사용하는 규칙을 허용합니다. 그러한 규칙은 개발 세계에서 전혀 드문 일이 아닙니다.

C# C 및 Java의 사례 민감도를 상속받습니다. 이는 개발자가 C#으로 쉽게 이동할 수 있도록 모방하려고합니다.

CASE가 30 년 전에 만들어 졌을 때 CASE를 민감하게 만드는 몇 가지 이유가 있었을 수도 있지만 그 이유에 대한 기록은없는 것 같습니다. Jeff Atwood는이를 옹호하는 좋은 기사를 썼습니다 사례 민감도는 더 이상 의미가 없습니다.

사례 민감한 식별자를 사용하면 이름 지정 규칙을 사용하여 코드를 더 읽기 쉽게 만들 수 있으며 명명 규칙이 없어도 사례 민감도에 의해 시행되는 일관성은 동일한 엔티티가 항상 같은 방식으로 작성되도록합니다.

아마도 C, C ++, Java 등에서 복사했거나 다른 langauges와 유사하게 의도적으로 동일하게 유지 될 수 있습니다.

그것은 C# langauge 디자이너 팀의 맛의 문제였습니다. 나는 그것이 다른 C 가족 언어와의 통합을위한 것이라고 생각합니다. 그러나 개인 분야와 같은 나쁜 프로그래밍 관행과 첫 번째 편지의 경우에만 다른 잘못된 프로그래밍 관행으로 이어집니다.

편집하다:

왜 이것이 나쁜 사람이 될까요?

class SomeClass 
{
    private int someField;

    public int SomeField
    {
        get { return SomeField; } 
        // now we have recursion where its not wanted and its 
        // difficult for the eye to pick out and results in a
        // StackOverflowException.
    }
}

_ 또는 m으로 개인 필드를 접두사하면 쉽게 찾을 수 있습니다. 그것은 거대한 빅기가 아니며 개인적으로 나는 방금 말한 것을 정확하게 할 수 있습니다.

구문 분석은 또한 사례에 민감한 언어에 대해 조금 더 쉽습니다. 비 사례에 민감한 방법을 선택할 좋은 이유가 없다면 왜 귀찮게합니까?

당신은 이것을 당신의 관점에서 매우 제한된 방식으로보고 있습니다. 언어 설계자는 문화적 이유, 다른 언어와의 호환성, 일반적인 코딩 관행 등의 다른 고려 사항을 고려해야합니다.

모든 현대 언어는 사례 감지를 사용합니다. 어떤 언어가 그렇지 않습니까?

몇 년 동안 Basic을 사용한 사람으로서 나는 동일한 변수에 대해 다른 사례를 사용하는 개발자에 매우 지쳤습니다. 이런 종류의 일은보고 가혹한 프로그래밍을보고 격려하기가 매우 귀찮습니다. 당신이 사건을 제대로 얻기 위해 귀찮게 할 수 없다면 - 당신은 또 무엇을 귀찮게 할 수 없습니까?

서 .NET Framework 개발자 가이드 자본화 규칙, 케이스,감도:

대소문자 지침 전적으로 식별자를 만들게 읽고 인식하고 있습니다.케이싱할 수 없 용을 회피하는 수단으로 이름 라이브러리 사이에 충돌이 요소입니다.

가정하지 않는 모든 프로그램 언어는 대소문자를 구분합니다.그 하지 않습니다.이름에 따라 다를 경우 혼자입니다.

그것이 사례에 민감한 이유에 대한 나의 가장 좋은 추측은 UNIX가 사례 민감성이기 때문입니다. C의 아버지 인 Dennis Ritchie도 유닉스를 공동 저술 했으므로 그가 쓴 언어는 그 당시 이용 가능한 환경과 일치 할 것임이 합리적입니다. C# 방금 조상으로부터 이것을 물려 받았습니다. 나는 이것이 Microsoft의 일부에 대한 좋은 결정이라고 생각합니다. Windows 경로는 사례에 민감하지 않다는 것입니다.

나는 당신이 다음과 같은 코드를보고 싶다고 생각합니다.

SomeField=28;
someField++;
somefield++;
SOMEFIELD++;

케이싱 변동의 일부 필드는 동일한 변수 인 것처럼 컴파일됩니다.

개인적으로, 나는 그것이 나쁜 생각이라고 생각합니다. 그것은 게으름 및/또는 부주의를 장려합니다. 어쨌든 문제가 없을 때 왜 제대로 케이스 하는가? 글쎄, 우리가 그것을하는 동안, 아마도 컴파일러는 SoemField++?

이름 지정. 이름은 오기가 어렵고 비슷한 것에 대해 이야기 할 때 새 이름을 만들거나 일부 표기법을 사용하여 차별화해야합니다.

이러한 시나리오는 필드에 할당하려는 생성자의 필드 또는 인수의 속성입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top