如何将方法结果作为参数传递给C#中的基类构造函数?

时间:2011-06-16 02:50:20

标签: c# .net oop

我试图实现这样的目标:

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

不行。 我是怎么做到的 谢谢,先进。

2 个答案:

答案 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的意图:)

相关问题