几个月前,我才开始进行C#编程,但偶然发现了令我困惑的东西。
我无法更改,例如一个字符串,而不向该方法添加“ ref ”或在该方法内返回另一个字符串。示例:
static void Main(string[] args)
{
string text = "old text";
ChangeString(ref text);
Console.WriteLine(text);
// Console-Output:
// new text
}
// set a string's value to "new text"
public static void ChangeString(ref string str)
{
str = "new text";
}
列表似乎并不需要放在前面的“ ref ”即可使用按引用调用。示例:
static void Main(string[] args)
{
List<string> names = new List<string>();
names.Add("Alexa");
names.Add("Siri");
AddNamesToList(names);
names.ForEach(i => Console.Write("{0},",i));
// Console-Output:
// Alexa,Siri,Google Assistant,Bixby,}
public static void AddNamesToList(List<string> names)
{
names.Add("Google Assistant");
names.Add("Bixby");
}
现在我的问题是:如何知道某个类是“按引用调用”还是“按值调用” /如何确定我是否可以像上面的列表或示例中的字符串一样使用它? / p>
谢谢!