C# 通过引用传递标签

C# 通过引用传递标签,c#,C#,我有一个简单的方法,我想传递一个标签 现在根据我的阅读,任何基于对象类的东西都应该自动通过引用传递,所以这是我第一次尝试我的方法: public static void ValiateStepAsInt(String Step, int? Value, Label Error) { if (Value == null && Step != "") { Error.Tex

我有一个简单的方法,我想传递一个标签

现在根据我的阅读,任何基于对象类的东西都应该自动通过引用传递,所以这是我第一次尝试我的方法:

        public static void ValiateStepAsInt(String Step, int? Value, Label Error)
        {
            if (Value == null && Step != "")
            {
                Error.Text = "Error!!!";
                return;
            }
            Error.Text = "";
        }
我没有得到任何编译器错误,但每当我调用它时,它都会设置Error.text,但一旦它离开了方法,该值就会消失(因此不是真正的按引用传递)

所以接下来我在标签错误中添加了“ref”选项;希望这可以解决问题,但仍然是一样的,方法设置它,但一旦完成,该值就会消失


尝试通过引用传递标签时缺少什么?

您正在将
Text
属性重置为条件语句下方的空字符串。也许你想包装
Error.Text=“”编码为
其他


如果不是这样,那么您可能也在其他地方设置了值,从而覆盖了您在此处显示的方法中的更改。

值不是因为这行代码而消失了吗:

Error.Text = "";
在方法返回之前,将标签设置为空字符串

也许你想这样做:

public static void ValiateStepAsInt(String Step, int? Value, Label Error)
{
    if (Value == null && Step != "")
    {
        Error.Text = "Error!!!";
    }
    else
    {
        Error.Text = "";
    }
}

除了丢失错误的实际原因之外,您对“通过引用传递”的理解是有缺陷的。请阅读@JonSkeet:谢谢你的阅读材料啊,伙计!我原来的方法那是一种回报!我忘了添加else逻辑!哦!是的,我搞砸了。在我原来的返回函数中,我忘记添加else语句了!