gpt4 book ai didi

c# - 如何将 C# 静态方法中的值分配给标签

转载 作者:太空狗 更新时间:2023-10-29 22:55:59 26 4
gpt4 key购买 nike

我在 C# 中有以下静态函数

public static string Greet(string name)
{
string greeting = "welcome ";

// is it possible to pass this value to a label outside this static method?
string concat = string.Concat(greeting, name);

//error
Label1.text = concat;

//I want to return only the name
return name;
}

正如您在评论中看到的那样,我只想保留名称作为返回值,但是我希望能够取出 concat 变量的值以将其分配给标签,但是当我尝试编译器拒绝,可以吗?有变通办法吗?

谢谢。

最佳答案

如果由于某种原因该方法必须是静态的,这里的主要方法是将任何所需的状态传递给该方法 - 即向该方法添加一个参数,该参数可以是标签或(更好) 一些带有可设置属性的类型包装器,如 .Greeting:

public static string Greet(string name, YourType whatever)
{
string greeting = "welcome ";

whatever.Greeting = string.Concat(greeting, name);

return name;
}

(其中 YourType 可以是您的控件,也可以是允许重用的接口(interface))

不想做的是使用静态或事件 - 那样很容易导致内存泄漏等。


例如:

public static string Greet(string name, IGreetable whatever)
{
string greeting = "welcome ";

whatever.Greeting = string.Concat(greeting, name);

return name;
}
public interface IGreetable {
string Greeting {get;set;}
}
public class MyForm : Form, IGreetable {
// snip some designer code

public string Greeting {
get { return helloLabel.Text;}
set { helloLabel.Text = value;}
}

public void SayHello() {
Greet("Fred", this);
}
}

关于c# - 如何将 C# 静态方法中的值分配给标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2205129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com