[英]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.