“不能隐式地从类型”Blah“转换为类型'string'

时间:2015-08-22 19:17:11

标签: c# struct xamarin

我在c#中使用一个struct来从函数中返回两个变量。我宣布新的结构“解决方案”,我现在正在尝试设置我的所有分配。但是,当我将一个可能的结果设置为结构的一个成员时,它表示我不能隐式转换类型,但它们都应该是结构成员定义的字符串。

我哪里出错了?

}
    Solution quadratic (int a, int b, int c)
    {
        d = Convert.ToInt32(Math.Pow (b, 2)) - (4 * a * c);
        if (d < 0) {
            Solution fail;
            fail.solution1 = fail;
            fail.solution2 = fail;
            return(fail);
        } else{
            Solution solutions;
            solutions.solution1 = Convert.ToString((-1 * b + Convert.ToInt32(Math.Sqrt (d))) / (2 * a));
            solutions.solution2 = Convert.ToString((-1 * b - Convert.ToInt32(Math.Sqrt (d))) / (2 * a));
            return(solutions);
        }
    }
    public struct Solution
    {
        public string solution1;
        public string solution2;
    }
}

}

更新:我做了一个愚蠢的事。我将新的“解决方案”结构命名为“失败”,这也恰好是我试图分配给它的字符串的名称。小心你的各种名字,孩子们

3 个答案:

答案 0 :(得分:2)

你的问题在这里:

fail.solution1 = fail; 
fail.solution2 = fail;

您正尝试将变量fail(类型为Solution)分配给变量fail.solution1和fail.solution2(类型为string)。

答案 1 :(得分:1)

错误隐藏在这里

        Solution fail;
        fail.solution1 = fail;
        fail.solution2 = fail;

您正在尝试向solution1 fail作为结构,而不是字符串。{/ p>

答案 2 :(得分:0)

您的问题是:fail是解决方案类型,fail.solution1 / fail.solution3是字符串类型。试试这个:

Solution fail = new Solution();
fail.solition1 = string.empty(); // Or you value
fail.solition2 = string.empty(); // Or you value
return fail;

为什么要退回此内容:return (fail)?为什么括号?