[英]How to pass method result as parameter to base class constructor in C#?
我正在努力实现以下目标:
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
不行 我该怎么做? 谢谢,谢谢。
你不能 变量方法是正确的方法,尽管不应将变量声明为静态变量,也不应将其设为公共字段。
class Test {
public string Input {get;set;}
public Test (string input) { Input = input; }
public override string ToString() {
return Input;
}
}
我的印象是您并不完全了解out关键字的含义。 本质上,当您编写诸如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
:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.