2012-08-14 55 views
0

在Visual C#2010 Express中,當按下ctr + F7以下代碼時,爲什麼控制檯不能打開?我在同一個項目中有幾個.cs文件,但我只想執行這個。在Visual C#2010 Express中按ctrl + F7時控制檯未打開?

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.IO.Ports; 


namespace ConsoleRead 
{ 
    protected class consoleread 
    { 
     public void GetPortName() 
    { 
      string[] sPorts = SerialPort.GetPortNames(); 
      foreach (string port in sPorts) 
      { 
       var serialPort = new SerialPort(); 
       serialPort.PortName = port; 
       serialPort.Open(); 
       serialPort.WriteLine("ATI"); 
       var message = Console.ReadLine(); 
      } 
    } 
    } 
} 

非常感謝提前!

回答

2

這是因爲Ctlr + F7會執行您的應用程序。您已創建控制檯應用程序,啓動時將搜索靜態Main方法,該方法將在控制檯窗口中執行。

當按下Ctrl + F7時不能執行任意代碼。

如果要執行此類中的代碼,則需要向您的Main方法(將執行該方法)添加一些代碼以創建此類的實例並執行GetPortName

下面是一些​​,它顯示了控制檯應用程序的工作方式。

當您查看項目屬性(右鍵單擊項目的解決方案資源管理器並單擊屬性)時,您將看到一個項目「啓動對象」。這指向包含應用程序起點的類。 Windows將在該類中查找Main方法,並從那裏開始運行您的程序。

我不會建議將您的所有代碼移動到Main以內。這將創建一個可執行所有邏輯的大功能。對於一個合理規模的程序,你的方法會爆炸,這將是一個噩夢來維護。在滿足特定目標的對象中對代碼進行分區可以幫助您構建更好的可維護程序。研究面向對象開發的基礎知識,以瞭解它如何提供幫助。這裏是一個鏈接到維基百科,有關於Object Oriented Programming的一些信息。

你的代碼的另一個錯誤是外部類不能被保護。您需要將protected class consoleread更改爲public class ConsoleRead(外殼是爲了便於閱讀)。

+0

非常感謝,您是否建議使用Main方法替換GetPortName方法,就像您發佈的MSDN示例中一樣? clr + F7只執行Main方法嗎? – 2012-08-14 10:28:06

+2

用更多的細節編輯我的答案 – 2012-08-14 10:35:57

+0

非常感謝!我在我的啓動對象中沒有設置。我怎樣才能使它成爲主要方法? – 2012-08-14 10:40:25

相關問題