【问题标题】:C# compilation question: newlines in 1 statement causing errorC# 编译问题:1 语句中的换行符导致错误
【发布时间】:2025-12-07 22:20:02
【问题描述】:

一个简单的问题

考虑一下 C# 中的这段代码

String a;
String b;
String c;

 1. a =  
 2. b =
 3. //Comment
 4. c = "a String";

在编译过程中,一切正常,但在运行应用程序时遇到了错误。从我的日志来看,错误发生在上面。

问题:

错误是由第 3 行的注释引起的吗?

错误是“对象引用未设置为对象的实例”

我猜编译器将上面的代码视为 1 语句。

此代码位于 aspx 页面后面的代码中。 (aspx.cs)

//背景故事//

aspx 在测试服务器中经过测试并且是文件。然而,在我们将页面部署到生产服务器后,pageload() 处出现了错误,发生错误的行在我上面代码示例的第 1 行。

只是我怀疑错误是由评论引起的。

我说的对吗?

【问题讨论】:

  • 更新了我的答案关于您更新的(错误)信息

标签: c# compilation newline


【解决方案1】:

编译器会忽略第 3 行中“//”右侧的所有内容,但第 1、2 和 4 行仍然是同一语句的一部分(以及第 4 行以下的所有内容,直到出现“;”或块已到达)。

除非您的示例代码在发布时丢失了某些内容,否则此代码甚至不应该编译(解析错误)。


好的,使用您编辑的代码,语法是有效的,不应该是您的错误的原因。请发布错误...

【讨论】:

    【解决方案2】:

    您的原始代码不合法​​。您编辑的代码很好;所有 3 个变量都分配了相同的字符串(“a String”)。

    您看到了什么确切错误?


    (问题更新为包括“对象引用未设置为对象的实例”)

    此错误与发布的代码无关(除非您在粘贴时错误地表示代码),与// 评论无关。你需要去别处看看。尝试查看堆栈跟踪,或注入调试/输出消息。或者只是单步执行代码以查看它实际发生故障的位置。

    【讨论】:

      【解决方案3】:

      你改写成这样就行了

      a = b = c = "a String";
      

      ?如果是这样,很明显是什么导致了您的问题;)

      【讨论】:

        【解决方案4】:

        您的代码没有错误。它运行良好。如果您看到错误,则它在其他地方。

        【讨论】: