我收到错误,无法隐式转换类型int吗?诠释。存在明确的转换(您是否缺少演员表?)[重复]

问题描述 投票:0回答:2

我对此并不陌生,但这来自用户选择要生成多少个数字然后输入其起始数字范围的表格,代码应从该数字中获取校验码,然后在其中创建其他数字类似时尚

     private void button1_Click(object sender, EventArgs e)
          {
            using (StreamWriter objWriter = new StreamWriter("C:\\temp\\Test.txt"))
            {
             int numpins = int.Parse(textBox1.Text); //creates a number counter for input
             string basepin = textBox2.Text; //user is going to input how many numbers to create
             int pinlength = basepin.Length;
             string formatspecifier = "{0:d" + pinlength.ToString() + "}";
             long pinnumber = long.Parse(basepin);

             for (int d = 0; d < numpins; d++)
                {
                GetCheckDigit(dig);//Calling the function here
                basepin = string.Format(formatspecifier, pinnumber);
                objWriter.WriteLine(basepin);
                pinnumber++;
                }

                objWriter.Close();
                }

              }

这里是功能

  private static string GetCheckDigit(string dig)
       {
        var sum = 0;
        var result = true;
        var digits = dig?.ToCharArray();
        for (int? i = digits?.Length - 1; i >= 0; i--)
            {
             var num = digits[i]- 48; //the error is here (digits[i])
                if (result)
                {
                    num *= 2;
                    if (num > 9)
                        num -= 9;
                }
                sum += num;
                result = !result;
            }
            if ((sum % 10) == 0)
            {
                return "0";
            }
            return (10 - (sum % 10)).ToString();

        }
c#
2个回答
1
投票
摆脱所有.?运算符,只检查方法开始时dig是否为空。

0
投票
问题是int?实际上是与int不同的类型。 int?实际上是Nullable<Int32>的别名,而intInt32的别名。区别在于int?是引用类型,可能是null,但int是不能是null的值类型。
© www.soinside.com 2019 - 2024. All rights reserved.