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.
다중 줄 코드를 사용하여 이 작업을 수행할 수 있을지는 확실하지 않지만 다중 줄 변수는 수행할 수 있습니다.
다음은 관련 청크입니다.
변수에 <![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
경고: 앰프샌드의 경우 &, < 등의 경우 <과 같이 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
'programing' 카테고리의 다른 글
| AADSTS9002325: 코드 교환을 위한 인증 키는 교차 오리진 인증 코드를 상환하는 데 필요합니다. (0) | 2023.05.09 |
|---|---|
| 도커 실행을 통해 셸 스크립트에 인수를 전달하는 방법 (0) | 2023.05.09 |
| 스레드에서 반환 값을 가져오는 방법은 무엇입니까? (0) | 2023.05.09 |
| SQL 오름차순 정렬 시 null 값이 마지막에 오도록 하는 방법 (0) | 2023.05.09 |
| 메이븐 다운로드에는 .last가 확장으로 업데이트되었습니다. (0) | 2023.05.09 |