簡體   English   中英

如何將方法結果作為參數傳遞給C#中的基類構造函數?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM