引号出现意外的字符错误

时间:2014-01-22 04:41:15

标签: c# .net

我收到的错误如Unexpected character '“'(完整的错误列表如下所示),代码如下:

using System;
using System.Threading;
namespace Chapter1
{
    public static class Program
    {
        public static void ThreadMethod()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(“ThreadProc: {0}”, i);
                Thread.Sleep(0);
            }
        }
        public static void Main()
        {
            Thread t = new Thread(new ThreadStart(ThreadMethod));
            t.Start();
            for (int i = 0; i < 4; i++)
            {
                Console.WriteLine(“Main thread: Do some work.”);
                Thread.Sleep(0);
            }
            t.Join();
        }
    }
}

错误:

Error   1   Unexpected character '“'
Error   2   Unexpected character '”'
Error   3   Unexpected character '“'
Error   4   Unexpected character '”'
Error   5   Invalid expression term ''
Error   6   ) expected
Error   7   ; expected
Error   8   Invalid expression term ''
Error   9   Invalid expression term ','
Error   10  ; expected
Error   11  ; expected
Error   12  Invalid expression term ')'
Error   13  ; expected
Error   14  Invalid expression term ''
Error   15  ) expected
Error   16  Invalid expression term ':'
Error   17  ; expected  
Error   18  ; expected
Error   19  ; expected
Error   20  Invalid expression term ''
Error   21  Identifier expected
Error   22  Invalid expression term ')'
Error   23  ; expected

4 个答案:

答案 0 :(得分:8)

问题:您使用无效引号将字符串括在Console.WriteLine()方法中,如下所示:

Console.WriteLine(“ThreadProc: {0}”, i);

在这里

Console.WriteLine(“Main thread: Do some work.”);

解决方案:您需要使用正确的双引号"将字符串括起来,如下所示:

Console.WriteLine("ThreadProc: {0}", i);

以及

 Console.WriteLine("Main thread: Do some work.");

完整代码:

using System;
using System.Threading;
namespace Chapter1
{
    public static class Program
    {
        public static void ThreadMethod()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("ThreadProc: {0}", i);
                Thread.Sleep(0);
            }
        }
        public static void Main()
        {
            Thread t = new Thread(new ThreadStart(ThreadMethod));
            t.Start();
            for (int i = 0; i < 4; i++)
            {
                Console.WriteLine("Main thread: Do some work.");
                Thread.Sleep(0);
            }
            t.Join();
        }
    }
}

答案 1 :(得分:5)

你的报价错误应该是常规的双引号而不是花哨的引用。

可能是由于代码的复制粘贴通过某些“美化”文本(即MS Word)的编辑器引起的。

答案 2 :(得分:4)

您使用的是非标准引号... 。使用常规引号"

答案 3 :(得分:2)

您使用的引号称为“智能引号”。 编译器只处理标准的“哑引号”。编译器将“哑引号”视为表达字符串的有效方式,而非智能引号。

Console.WriteLine(“Hello!”); // compile-time error
Console.WriteLine("Hello!"); // ok 
string str = "Hello”";       // all right
char curlyQuote = '”';       // fine

来自Wikipedia

  

弯曲和直线引号有时也称为智能   引号(“......”)和哑巴引号(“......”)分别; 这些名字在   引用在几个文字处理器中找到的函数的名称   自动将用户输入的直引号转换为   弯曲的报价。这个功能,被称为“教育报价”,是   为缺乏单独的开放和报价的系统开发   键盘键。

旁注:您最有可能复制&amp;从本书的 Exam Ref 70-483 的PDF版本粘贴。 (您的代码是本书中的一个示例。)如果您真的想学习这些材料,请手动输入,而不是将其粘贴到VS或您正在使用的任何IDE /文本编辑器中。