为了账号安全,请及时绑定邮箱和手机立即绑定

编译错误:只有assignment、call、increment、decrement、new

编译错误:只有assignment、call、increment、decrement、new

C#
犯罪嫌疑人X 2022-12-04 11:05:53
我正在写以下内容:namespace Converter {      public class Converter      {        public string dnaToRna(string dna)        {          string rna = "";          foreach(char letter in dna){            letter=='T' ? rna+='U' : rna+=letter;            rna+=letter;          }          return rna;        }      }    }当我用测试调用代码时:    namespace Converter {  using NUnit.Framework;  using System;  [TestFixture]  public class Test  {    [Test]    public void test()    {      Converter converter = new Converter();      Assert.AreEqual("UUUU", converter.dnaToRna("TTTT"));    }  }}它说:src/Solution.cs(9,9): error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement但是,如果我将其替换为:namespace Converter {  public class Converter  {    public string dnaToRna(string dna)    {      string rna = "";      foreach(char letter in dna){        if(letter=='T'){          rna+='U';        }else{          rna+=letter;        }      }      return rna;    }  }}它有效,为什么?感谢您的帮助😌😌😌。
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

不正确:

letter=='T' ? rna+='U' : rna+=letter;

正确的:

rna+= letter=='T' ? 'U' : letter;


查看完整回答
反对 回复 2022-12-04
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

三元运算符应该返回一个值。它并不意味着可以替代 if 语句来执行代码。做任何其他事情都会产生副作用,那就是改变它本来要做的事情。
不要在应该是两个可能的返回值之一期间改变事物,您应该确定您想要什么样的回报并使用它。

rna += (letter=='T') ? 'U' : letter;


查看完整回答
反对 回复 2022-12-04
?
绝地无双

TA贡献1946条经验 获得超4个赞

您不应该在三元条件本身内执行赋值;你应该改用它。

rna += letter=='T' ? 'U' : letter;

句法:

Boolean Expression ? First Statement : Second Statement

笔记:

三元运算符返回包含在它的第二部分或第三部分中的值或表达式。它不执行语句。


查看完整回答
反对 回复 2022-12-04
  • 3 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信