为作业分配参数?

时间:2015-03-25 01:02:47

标签: c# .net visual-studio-2013

我正在尝试为作业分配一个bool参数,但我不知道如何分配给一个分配

这是我的代码。

 private string ReadName(out bool success)
        {
            string name = "";

            success = name = Nametxt.Text; // not working because of two equal signs 


          return name;
        }

我能用int变量做到这一点。这就是我用int做的方式。

private int ReadAge(out bool success)
        {
            int age = 0;

            success = int.TryParse(Agetxt.Text, out age);

            if (!success)
                MessageBox.Show("The entered age is not valid!");

            return age;
        }

如果name变量返回非字母值,还有一种方法可以使ReadName方法打印错误(如ReadAge方法)吗?

谢谢

3 个答案:

答案 0 :(得分:3)

C#中的赋值返回分配的值。你注意到的问题不是因为有两个等号,而是因为类型不匹配。

例如,这将产生与直接调用NameTxt.Text getter相同的值。

Console.WriteLine(name = NameTxt.Text);

返回的值也与赋值类型相同。

正如我不能说的那样,

bool testBoolean = "true";

您无法将字符串赋值的结果分配给bool输出参数。

如果您希望验证输入,则必须提供某种方式进行验证。例如,

name = NameTxt.Text;

success = name == "yes";

或者

success = Regex.IsMatch(name, @"\d");

无论您使用何种验证方法,都需要指定它。您不能依赖编译器来了解您希望实现的目标。

int.TryParse返回bool的原因是因为解析int并不总是有效 - 字符串几乎可以包含任何内容,但是很少有字符集可以正确映射到整数。这是一种内置的验证形式。

答案 1 :(得分:1)

分配字符串值不会失败,因此您可以根据需要将变量设置为true。您不需要该值的变量,只需返回值:

private string ReadName(out bool success)
{
  success = true;
  return Nametxt.Text;
}

答案 2 :(得分:0)

听起来你正在为字符串寻找类似于int.TryParse的东西,如果字符串中有任何数字(或非字母字符),它将失败。

您可以使用正则表达式来测试字母字符,如下所示。 IsMatch方法将针对表达式测试输入字符串,如果所有字符仅为a-z或A-Z,则返回true。

private string ReadName(out bool success)       
{
    string name = "";

    success = Regex.IsMatch(Nametxt.Text, "^[a-zA-Z]+$");

    if (!success)
        MessageBox.Show("The entered name is not valid!");
    else
        name = Nametxt.Text;

    return name;        
}