programing

VB의 여러 줄에 걸친 단일 문입니다.밑줄 문자가 없는 NET

easyjava 2023. 5. 9. 23:14
반응형

VB의 여러 줄에 걸친 단일 문입니다.밑줄 문자가 없는 NET

밑줄 문자 없이 여러 줄에 걸쳐 문장을 만드는 방법이 있습니까?

SQL 문과 같은 다중 줄 문자열, 특히 LINQ 쿼리에서는 정말 짜증이 납니다.

줄을 바꿀 때의 추악함과 어려움 외에도(더 이상 줄을 서는 것이 없음), 다중 줄 문 중간에 주석을 사용할 수 없습니다.

내 일상적인 지옥의 예들.

dim results = from a in articles _
              where a.articleID = 4 _ ' articleID     - Nope, can't do this
              select a.articleName


dim createArticle as string = _
    "Create table article " & _
    "    (articleID int " & _
    "    ,articleName varchar(50) " & _
    "    )"

아니요, 언더스코어를 쓰셔야 하는데, VB라고 생각합니다.NET 10은 밑줄이 없는 여러 줄을 허용하며, 끝이 어디에 있어야 하는지 알 수 없는 경우에만 필요합니다.

대부분의 여러 줄 문자열의 경우 내부 CDATA 블록과 함께 XML 요소를 사용하면 단순한 원시 문자열 데이터에 대한 이스케이프를 수행하지 않아도 됩니다.

Dim s as string = <s><![CDATA[Line 1
line 2
line 3]]></s>.Value

저는 많은 사람들이 동일한 형식을 말하지만 "< s >" 태그(CDATA 블록만) 없이 비주얼 스튜디오 자동 포맷 심을 사용하여 각 줄의 선행 공백을 변경하는 것을 보았습니다.이것은 Linq "X" 객체 뒤에 있는 객체 상속 구조 때문이라고 생각합니다.CDATA는 "컨테이너"가 아니며 외부 블록은 XContainer에서 상속되는 XElement입니다.

VB부터.NET 10, 암묵적 행 연속성은 여러 구문 요소에 대해 지원됩니다(Visual Basic의 문장: 여러 줄을 통해 문장 계속 참조).연결 연산자(&)는 암묵적인 줄바꿈을 지원하는 구문 요소 목록에 있습니다.삽입된 주석도 지원되므로 두 번째 예제를 다음과 같이 다시 작성할 수 있습니다.

dim createArticle as string = 
    "Create table article " &
    "    (articleID int " &           ' Comment for articleID
    "    ,articleName varchar(50) " & ' Comment for articleName
    "    )"

암시적 행 연속은 쿼리 연산자에 대해서도 작동하며 다음과 같은 몇 가지 제한이 있습니다.

쿼리 연산자 전후(집계, 고유, 보낸 사람, 그룹 기준, 그룹 참여, 허용, 순서 지정, 선택, 건너뛴다, 테이크, 테이크, 테이크, 테이크, 도중, 위치, 입력, 입력, 켜기, 오름차순 및 내림차순).여러 키워드(Order By, Group Join, Take While 및 Skip While)로 구성된 쿼리 연산자의 키워드 간에는 선을 끊을 수 없습니다.

다시 설명을 삽입할 수 있으므로 첫 번째 예제는 다음과 같이 다시 작성할 수 있습니다.

dim results = from a in articles
              where a.articleID = 4  ' articleID - now perfectly legal
              select a.articleName

아니라고 하겠습니다.

하지만 제가 가진 유일한 증거는 개인적인 경험과 온라인 계속 문서에는 다른 내용이 없다는 사실입니다.

http://msdn.microsoft.com/en-us/library/aa711641(VS.71).aspx

아니요, 밑줄이 유일한 연속 문자입니다.개인적으로 저는 C#에서와 같이 항상 사용하도록 강요받는 것보다 가끔 연속 문자를 사용하는 것을 선호하지만, 댓글 문제(때로는 귀찮다는 것에 동의함)를 제외하고, 물건을 정렬하는 것은 문제가 되지 않습니다.

VS2008에서는 두 번째 줄과 다음 줄을 선택하고 탭 키를 여러 번 누르면 전체 로트가 이동합니다.

조금만 지나치면 한 번에 한 문자의 여분의 공간을 삭제할 수 있습니다.약간 어색하지만 일단 저장되면 그대로 유지됩니다.

이 방법으로는 부족한 경우가 드물지만 다음과 같은 방법을 사용하여 모든 작업을 정렬합니다.

dim results as String = ""
results += "from a in articles "
results += "where a.articleID = 4 " 'and now you can add comments
results += "select a.articleName"

완벽하지도 않고, C#을 선호하는 사람들이 투덜거릴 것이라는 것을 알지만, 여기 있습니다.스타일 선택이지만, 저는 여전히 끝없는 세미콜론보다는 선호합니다.

지금 나는 누군가가 내가 String Builder를 사용했어야 했다고 말하기를 기다리고 있습니다 ;-)

저는 이것이 허용된 답변을 가지고 있다는 것을 알고 있지만, 이 질문을 검색할 때 발견한 최상위 기사이며, 지금은 매우 구식입니다.저는 조금 더 조사를 했고, 이 MSDN 기사에는 VB에 대한 다음 코드 행에 암묵적으로 문을 계속하는 구문 요소 목록이 포함되어 있습니다.넷 2010.

다중 줄 코드를 사용하여 이 작업을 수행할 수 있을지는 확실하지 않지만 다중 줄 변수는 수행할 수 있습니다.

VB의 여러 줄 문자열입니다.그물

다음은 관련 청크입니다.

변수에 <![CDATA]와 <%=를 모두 사용하는 방법을 알게 되어 걱정 없이 코딩할 수 있습니다.

기본적으로 VB 변수 이전에 CDATA 태그를 종료한 다음 이후에 다시 추가해야 CDATA가 VB 코드를 캡처하지 않습니다.CDATA 블록이 여러 개이므로 전체 코드 블록을 태그로 묶어야 합니다.

Dim script As String = <code><![CDATA[
  <script type="text/javascript">
    var URL = ']]><%= domain %><![CDATA[/mypage.html';
  </script>]]>
</code>.value

XML 리터럴을 사용하여 다음 작업을 수행할 수 있습니다.

Dim s = <sql>
  Create table article
  (articleID int  -- sql comment
  ,articleName varchar(50)  <comment text="here's an xml comment" />
  )
</sql>.Value

경고: 앰프샌드의 경우 &amp;, < 등의 경우 &lt;과 같이 XML 텍스트 규칙이 적용됩니다.

Dim alertText = "Hello World"
Dim js = <script>
          $(document).ready(function() {
           alert('<%= alertText %>');
          });
         </script>.ToString  'instead of .Value includes <script> tag

참고: 위는 이스케이프해야 하는 문자를 포함하는 경우 문제가 있습니다.사용하기 더 좋음"<script>"+js.Value+"</script>"

언급URL : https://stackoverflow.com/questions/461714/single-statement-across-multiple-lines-in-vb-net-without-the-underscore-characte

반응형