我试图实现这样的目标:
class App {
static void Main(string[] args) {
System.Console.WriteLine(new Test("abc")); //output: 'abc'
System.Console.ReadLine();
}
}
我可以通过变量传递:
class Test {
public static string str;
public Test (string input) { str = input; }
public override string ToString() {
return str;
}
}
工作正常。 但是,我的愿望是做一些事情:
class Test {
public static string input;
public Test (out input) { }
public override string ToString() {
return input;
}
}
System.Console.WriteLine(new Test("abc test")); //abc test
不行。 我是怎么做到的 谢谢,先进。
答案 0 :(得分:3)
你做不到。变量方法正是正确的方法,尽管变量不应该被声明为静态,并且不应该是公共字段。
class Test {
public string Input {get;set;}
public Test (string input) { Input = input; }
public override string ToString() {
return Input;
}
}
答案 1 :(得分:3)
我的印象是您并不完全了解关键字的含义。基本上当你写void MyMethod(out string var)
之类的东西时,这意味着你想要从方法中返回一些值,而不是将它传递给方法。
例如,bool Int32.TryParse(string s, out int result)
。它解析字符串s,如果解析成功则返回,并将解析后的数字放到结果中。因此,要正确使用out
,您应该在调用位置使用实变量。所以你不能写Int32.Parse("10", 0)
,因为这个方法不能将10的结果赋给0.它需要真正的变量,如:
int result;
bool success = Int32.TryParse("10", out result);
所以,你的愿望是别的 - 它不符合语言设计师对out
的意图:)