C# 无法将int隐式转换为bool

C# 无法将int隐式转换为bool,c#,C#,好的,我得到一个不能把int转换成bool的错误 我正在尝试转换此VB.net代码: 函数GetChecksumByVal源作为字符串 尺寸、重量、检查保持、校验和长度 重量=1 校验和=0 对于iVal=1到LenSource CheckHold=AscMid$来源,iVal,1*重量 校验和=校验和+校验保持 重量=重量+2 下一个伊瓦尔 GetChecksum=CheckSum Mod&H7FFFFFFF 端函数 我已经到了这里: public long getCheckSum(s

好的,我得到一个不能把int转换成bool的错误

我正在尝试转换此VB.net代码:

函数GetChecksumByVal源作为字符串 尺寸、重量、检查保持、校验和长度 重量=1 校验和=0 对于iVal=1到LenSource CheckHold=AscMid$来源,iVal,1*重量 校验和=校验和+校验保持 重量=重量+2 下一个伊瓦尔 GetChecksum=CheckSum Mod&H7FFFFFFF 端函数 我已经到了这里:

    public long getCheckSum(string source)
    {
        long iVal, weight, checkgold, checksum = new long();
        weight = 1;
        checksum = 0;
        for (iVal = 1; Strings.Len(source);)
        {

        }
    }
问题是,对于iVal=1,问题是:;字符串。Lensource;密码我正在使用Microsoft.VisualBasic。我只是不知道现在该怎么办。如果你能帮我,那就太好了

    for (iVal = 1; iVal < source.Length; iVal++)
    {

    }
中间部分是一个条件。

您需要:

  for (iVal = 1; iVal <= source.Length; ival += 1)
但请注意,这会循环通过1..source.Length, 不是在c0中更常见的。source.Length-1

for (iVal = 1; iVal <= source.Length; iVal++)
{
    //your code here
}
或者,如果你想让iVal一个人呆着,因为你以后需要它做一些纯粹的事情

for(i = iVal; i <= source.Length; i++)
{
    //your code here.
}

看起来您需要正确设置循环。在C中,for循环通常遵循以下格式:

for(initializer; conditional check; evaluation)
初始值设定项是设置变量的地方,如iVal=1 条件检查用于确定for循环的边界 求值通常是增加变量的地方 在代码中,有一个整数Strings.Lensource作为条件检查,它需要一个布尔响应,因此失败

for循环开启器应如下所示:

for (iVal = 1; iVal < source.Length; iVal++)
这是假设您的逻辑是源字符串的0
另外,在C中检查字符串长度的方法是使用.length属性,而不是使用Strings.Len函数。

您的For语法应该如下所示:

For(ival = 1; source.Length; ival++)
{
  // your code here
}

ival++将取代VB中的下一个。

由于其他人已经解决了您的问题,我只想添加供您将来参考,您可能希望查看

我自己也在很多场合使用过它,效果很好。

for循环的标准语法:

比较需要bool,您提供的是一个带有Strings.Lensource的int,它返回一些数字,而不是像true或false这样的布尔值

试一试

您可能希望使用而不是将for循环逐字翻译成C,我将使用foreach,因为您正在对字符串中每个字符的序列元素进行直接迭代:

public long getCheckSum(string source)
{
  long checkHold = 0, checkSum = 0, weight = 1;

  foreach (char ch in source)
  {
    checkHold = (long)ch * weight;
    checkSum += checkHold;
    weight += 2;
  }

  return checkSum % 0x7FFFFFFF;
}

它来自打字速度太快的省份的打字迷之地。我会解决的。在其他人添加或投票任何包含iVal=1的内容之前,请查看文档,其中声明使用此函数的索引是基于1的。C等价项必须使用IVL=0才能正确。这很可能是1次迭代太短。
for(iVal = 1; iVal < String.Len(source); iVal++)
public long getCheckSum(string source)
{
  long checkHold = 0, checkSum = 0, weight = 1;

  foreach (char ch in source)
  {
    checkHold = (long)ch * weight;
    checkSum += checkHold;
    weight += 2;
  }

  return checkSum % 0x7FFFFFFF;
}