2014-10-18 21 views
0

我的文本框有一個text_changed函數。我希望我的軟件讀取一個字符並檢查它是否是序列字符'/ n'。由於連續的字符被視爲單個字符我試圖使用TextReader.Equals(「\ n」),但說如何爲抽象類對象使用未分配的局部變量

使用未分配的局部變量「讀者」

的TextReader的是發生錯誤一個抽象類。我試圖通過使用TextReader reader = new TextReader初始化它,但發生錯誤,說我不能初始化一個抽象類。

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    System.IO.TextReader reader; 

    if(reader.Equals(null)) 
    { 
     his_Textbox.Text = My_Textbox.Text; 
    } 
} 

請告訴我該怎麼辦才能阻止此錯誤。

+0

讀者應該做什麼? – Mephy 2014-10-18 00:17:10

+0

設想找新行 – 2014-10-18 00:17:56

+0

是的,在什麼字符串中尋找新行? – 2014-10-18 00:18:14

回答

2

您需要使用TextReader的具體實現(如StringReader)來初始化它,也許。其次,也許你不明白C#中的引用類型。該變量僅僅是一個對象的引用(指針)。沒有初始化,沒有對象,只是一個空變量。

嘗試:

using(var reader = new System.IO.StringReader(whateverText)) { 
     //... 
} 

http://msdn.microsoft.com/en-us/library/system.io.stringreader(v=vs.110).aspx

但是根據你的需要,你可能甚至不需要一個讀者。只需使用正則表達式或字符串API來搜索文本框。

+0

我會小心地說「一個空變量」,因爲它甚至沒有'null'的值,它是未初始化的。 – 2014-10-18 00:19:17

+0

@ScottChamberlain - 非常好,謝謝。成員字段爲空,但是對於局部變量,我_think_它是未定義的。我會修改。 – codenheim 2014-10-18 00:23:07

+0

對於未設置的成員字段,它不是「成員字段爲null」,它是['default(T)'](http://msdn.microsoft.com/en-us/library/xwth0h0d.aspx)。對於'default(T)'類只是'null'。 – 2014-10-18 00:26:34