字符串作为C#3.0中的char []数组?

时间:2008-12-03 17:59:55

标签: c# .net c#-3.0

C# 3.0 spec在第10.6.1.3节“输出参数”中包含以下代码示例:

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]”)?

6 个答案:

答案 0 :(得分:7)

这是一个无效字符' - '。将' - '更改为' - '

答案 1 :(得分:1)

你得到什么错误?

自.NET v1.0以来,System.String已经拥有[]访问器

答案 2 :(得分:0)

根据MSDN(http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx),这甚至可能在.net 1.1中你当然可以有一个

string myString =“Filip Ekberg”;

然后通过执行myString [0]

访问第一个char

答案 3 :(得分:0)

您在代码块中看到的短划线字符是em-dash而不是减号。他们看起来很相似,但他们是不同的。无论您从哪里剪切并粘贴代码,都会将其更改为不正确的字符。

char ch = path[i - 1];

完全有效(只要 - 是减号而不是破折号)

答案 4 :(得分:0)

在旁注中,为什么要拆分路径和文件名?在Path类中有很多非常有用的功能可供您使用。

使用Path.GetFileName()作为文件名,Path.GetDirectoryName()作为目录名。

答案 5 :(得分:0)

它对我有用,但你在问题中粘贴的代码有一个'm-dash'字符(十六进制96)而不是一个减号(十六进制2D) - 也许这是一个字体问题?