切换循环和匹配答案

时间:2018-05-01 16:13:13

标签: c# switch-statement

我试图建立一个程序来解决任何问题。这就是我的所作所为:

data.content = "1. The word 'virile' means what?\na. Like a rabbit\nb. Like a man\nc. Like a wolf\nd. Like a horse\n" # I'm defining the question here.

这里是代码,知道我们定义的问题的答案是什么:

if (data.Content.Contains(question))
        {
            switch (question)
            {
                case "The word 'virile' means what?":
                    ans = " Like a man ";
                    break;
                case "is he a man ?":
                    ans = "No";
                    break;
                case "Can you speak ?":
                    ans = "hello";
                    break;

现在解决部分:

var inputSplit = data.Content.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
theanswer = new string(inputSplit.Where(x => x.Contains(ans)).Select(x => x[0]).ToArray()[0], 1);
Reply(theanswer);

问题在于它显示" null"作为答案,因为它不会进入开关循环。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

我认为这是问题,但是评论太长了......如果不是答案,我会删除。

当您创建这样的属性时:public string ans { get; set; },您不能将其设置为任何内容,因此ans实际上是null

这会导致您的第二行:theanswer = new string(inputSplit.Where(x => x.Contains(ans)).Select(x => x[0]).ToArray()[0], 1);出现问题。在此行的中间,您可以检查是否... x.Contains(ans))

如果您将public string ans { get; set; }更改为public string ans = "",则任何时候都不会null

我不知道我的解释是否完全正确,但将ans设置为""而不是将其作为属性使其适用于我。尝试并报告它是否无效:)

相关问题