2008-12-03 35 views
1

C# 3.0 spec具有第10.6.1.3下面的代碼示例「輸出參數」:字符串作爲C#3.0中的char []數組?

using System; 
class Test 
{ 
    static void SplitPath(string path, out string dir, out string name) { 
     int i = path.Length; 
     while (i > 0) { 
      char ch = path[i – 1]; 
      if (ch == '\\' || ch == '/' || ch == ':') break; 
      i--; 
     } 
     dir = path.Substring(0, i); 
     name = path.Substring(i); 
    } 
    static void Main() { 
     string dir, name; 
     SplitPath("c:\\Windows\\System\\hello.txt", out dir, out name); 
     Console.WriteLine(dir); 
     Console.WriteLine(name); 
    } 
} 

我不能得到這個代碼在VS2005/C#2.0編譯。 C#3.0中的字符串行爲是否發生了變化,以便可以將字符串引用爲char []數組而不顯式轉換它(語句「ch = path [i-1]」)?

+1

吉姆 - 請注意您的回覆如何與您回覆的答案不同步?您需要將回復添加爲評論,而不是添加新答案,以確保對話流動。 你還沒有評論的聲望呢,我明白了,但你知道...... – 2008-12-03 18:38:13

回答

6

它是無效字符「 - 」。將' - '更改爲' - '

+0

謝謝達林!沒有注意到,完全看錯了東西! – 2008-12-03 18:13:04

1

你有什麼錯誤?

System.String已自.NET 1.0

0

你在你的代碼塊中看到的連字符是一個破折號不是減號。他們看起來很相似,但他們不一樣。無論你剪切並粘貼代碼,都將其改爲不正確的字符。

char ch = path[i - 1]; 

是完全合法的(只要 - 爲負的,而不是一個破折號)

0

在旁註中,爲什麼要拆分路徑和文件名?在Path課上有很多非常有用的功能可以幫助你。

使用Path.GetFileName()作爲文件名,Path.GetDirectoryName()作爲目錄名稱。

0

它適用於我,但你粘貼在你的問題的代碼有一個'm-dash'字符(十六進制96),而不是減號(十六進制2D) - 也許這是一個字體問題?