加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将C#转换为VB

发布时间:2020-12-15 23:38:09 所属栏目:百科 来源:网络整理
导读:问题: 我目前在C#中有以下代码行: if ((oAEAuthInfo.GetInfo("LetterTo_name") == (oAEAuthInfo.GetInfo("firstname") + " " + oAEAuthInfo.GetInfo("lastname"))) (oAEAuthInfo.GetInfo("Name")).Contains("OMEGA") || (oAEAuthInfo.GetInfo("Name")).Con
问题:

我目前在C#中有以下代码行:

if ((oAEAuthInfo.GetInfo("LetterTo_name") == (oAEAuthInfo.GetInfo("firstname") + " " + oAEAuthInfo.GetInfo("lastname"))) && (oAEAuthInfo.GetInfo("Name")).Contains("OMEGA") || (oAEAuthInfo.GetInfo("Name")).Contains("Alpha"))

它显示我想要的正确.

但是,当我尝试在VB中做同样的事情时:

IF ((oAEAuthInfo.GetInfo("LetterTo_name") = (oAEAuthInfo.GetInfo("firstname") + " " + oAEAuthInfo.GetInfo("lastname"))) And ((oAEAuthInfo.GetInfo("Name")).Contains("Omega") Or (oAEAuthInfo.GetInfo("Name")).Contains("Alpha"))) THEN

它没有显示任何结果.这意味着当我运行我的C#版本的代码时,它会显示一个图像但是对于VB版本,没有任何反应.

我究竟做错了什么?

UPDATE

大家好.我想感谢大家的帮助,并帮助我更好地理解VB.但是,它仍然没有显示任何图像,我不知道为什么.

以下是我正在做的事情.出于某种原因,当我尝试分配变量时,它也没有显示任何结果.任何帮助,将不胜感激.

<table width="100%" CELLSPACING="0" CELLPADDING="0">
<tr>
	<td align="center">
	<%
	IF ((oAEAuthInfo.GetInfo("LetterTo_name") = (oAEAuthInfo.GetInfo("firstname") & " " & oAEAuthInfo.GetInfo("lastname"))) AndAlso ((oAEAuthInfo.GetInfo("Name")).Contains("OMEGA") OrElse (oAEAuthInfo.GetInfo("Name")).Contains("ALPHA"))) THEN
		select (oAEAuthInfo.GetInfo("Site")) 
			case "R107":
			case "R0712":
			case "R108":
			case "R10812":
			case "R113":
			case "R11312":
			case "R115":
			case "R11512":
			case "R10702":
			case "R10802":
			case "R11302":
			case "R11502":
			case "RG112":
				Response.Write("<img src='/images/logos/COLA-m.jpg'>")
			case "RG109":
			case "RG10912":
			case "RG110":
			case "RG11012":
			case "RG10902":
			case "RG11002":
				Response.Write("<img src='/images/logos/regalcodow-m.jpg'>")
      End select
ELSEIF (oAEAuthInfo.GetInfo("Name") = (oAEAuthInfo.GetInfo("firstname") & " " & oAEAuthInfo.GetInfo("lastname"))) THEN
			case "RG112":
			case "RG11212":
			case "RG11202":
				Response.Write("<img src='/images/logos/RegalBG-m.jpg'>")				
			case "RMG117":
			case "RMG11712":
			case "RMG11702":
				Response.Write("<img src='/images/logos/RegalGle-m.jpg'>")				
			case "MG101":
			case "MG10112":
			case "MG102":
			case "G10212":
			case "G116":
			case "G11612":
			case "118":
			case "11812":
			case "10102":
			case "G10202":
			case "G11602":
			case "G11802":
				Response.Write("<img src='/images/logos/RegalSFV-m.jpg'>")
     End select
Else
		IF((oAEAuthInfo.GetInfo("Facility") <> (oAEAuthInfo.GetInfo("firstname") & " " & oAEAuthInfo.GetInfo("lastname"))) OrElse (oAEAuthInfo.GetInfo("_ReferredTo") <> (oAEAuthInfo.GetInfo("firstname") & " " & oAEAuthInfo.GetInfo("lastname"))) OrElse (oAEAuthInfo.GetInfo("ReferredFrom") <> (oAEAuthInfo.GetInfo("firstname") & " " & oAEAuthInfo.GetInfo("lastname"))) OrElse (oAEAuthInfo.GetInfo("pcpname") <> (oAEAuthInfo.GetInfo("firstname") & " " & oAEAuthInfo.GetInfo("lastname")))) THEN
select (oAEAuthInfo.GetInfo("PatientSite")) 
				case "MG112":
				case "MG11212":
				case "MG11202":
					Response.Write("<img src='/images/logos/RegalBG.bmp'>")				
				case "MG117":
				case "MG11712":
				case "MG11702":
					Response.Write("<img src='/images/logos/RegalGle.bmp'>")					
				case "MG101":
				case "MG10112":
				case "MG102":
				case "MG10212":
				case "RG116":
				case "MG11612":
				case "MG118":
				case "MG11812":
				case "MG10102":
				case "MG10202":
				case "MG11602":
				case "MG11802":
					Response.Write("<img src='/images/logos/RegalSFV.bmp'>")
     End select
  End If
End If
	%>
	</td>
</tr>
</table>

解决方法

在这种情况下,一个好的调试策略是在if语句之外进行评估,并使用调试器逐步执行并确保正确计算值.

C#

var letterToName = oAEAuthInfo.GetInfo("LetterTo_name");
var fullName = oAEAuthInfo.GetInfo("firstname") + " " + oAEAuthInfo.GetInfo("lastname");
var containsOmega = oAEAuthInfo.GetInfo("Name").Contains("OMEGA");
var containsAlpha = oAEAuthInfo.GetInfo("Name").Contains("Alpha");

if ((letterToName == fullName) && containsOmega || containsAlpha)

VB

dim letterToName = oAEAuthInfo.GetInfo("LetterTo_name")
dim fullName = oAEAuthInfo.GetInfo("firstname") + " " + oAEAuthInfo.GetInfo("lastname")
dim containsOmega = oAEAuthInfo.GetInfo("Name").Contains("Omega")
dim containsAlpha = oAEAuthInfo.GetInfo("Name").Contains("Alpha")

IF ((letterToName = fullName) And (containsOmega Or containsAlpha)) THEN

并且很清楚你的问题是什么:你在VB代码中有一组额外的括号,它们是C#代码中缺少的.操作顺序规定操作符优先于操作符,因此在C#代码中,如果containsAlpha为true,则条件总是通过,而在VB代码中,只有在letterToName = fullName也为真时才会发生.

此外,“Omega”的区分大小写可能是问题.

正如Visual Vincent指出的那样,And和Or运算符实际上并不符合C#&& amp;的行为.和||运算符 – 相反,VB的运算符是AndAlso和OrElse.除非GetInfo或Contains有一些副作用,否则在这种情况下这不太可能成为问题的根源.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读