程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ VS C#(2):字符串,命名空間

C++ VS C#(2):字符串,命名空間

編輯:C++入門知識

//=====================================================================
//TITLE:
//    C++ VS C#(2):字符串,命名空間
//AUTHOR:
//    norains
//DATE:
//    Tuesday  30-November-2010
//Environment:
//    Visual Studio 2010
//    Visual Studio 2005
//=====================================================================

1. 字符串

    無論是C++還是C#,都支持字符串,都可以用string來進行保存。不過,string在C#中是內置類型,但在C++裡卻必須要借助於STL。還有一點很有意思的是,string在C#中存儲的是UNICODE,但在C++卻是ANSIC。如果要讓C++支持UNICODE的字符串,則必須使用wstring。

    這兩種語言,對於字符串都可以這樣操作:string strVal = “Hello,”;
strVal += “World!”;

    如果字符串帶有換行或別的轉意字符,都可以使用“”來表示,如: strVal = “Hello,World! I like it!”;
 strVal = “He said:”It’s you!””;

     但C#有個增強的特性,可以在第一個引號前加“@”,表示在“@”之後,“;”之前的引號的內容原封不動作為數值。簡單點說,上面的兩個語句,用C#還可以以這種形式表示: strVal =@ “Hello,World!
 I like it!”;
 strVal = @“He said:”It’s you!””;


2. 命名空間

    C++和C#都支持命名空間,也就是namespace,並且都支持嵌套,如:namespace Root
{
    namespace Leaf
    {
        enum Type
        {
            TYPE_NORMAL,
            TYPE_HIGH,
        };
    }
}
 

     雖然聲明一致,但使用上卻大相徑庭。對於C++來說,命名空間的必須使用“::”來進行標注,如: Root::Leaf::Type type = Root::Leaf::TYPE_NORMAL;

     但C#卻是采用“.”:Root.Leaf.Type type = Root.Leaf.Type.TYPE_NORMAL; 

     如果以操作的觀點來看,本例中的Type在C++中更像是類的類型,而C#則是對象的類型。

     還有一個很有意思的區別,C#不能直接在命名空間中直接聲明變量或函數,如:
namespace Root
{
    namespace Leaf
    {       
        int iVal = 0;

        void Run(){};
    }
}
 

    這個代碼段在C++能夠很完美地進行編譯,但在C#中卻會提示出錯:error CS0116: A namespace cannot directly contain members such as fields or methods

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved