我的if语句似乎没有被接受

时间:2014-03-27 20:40:48

标签: c# console console-application

if(string s; s = Console.ReadLine(); s == "ja" || "Ja")

A screenshot of all the errors i got from that single line I dont understand a single of them 有人可以解释

4 个答案:

答案 0 :(得分:2)

您无法在if语句中声明变量,这也是无效的:s == "ja" || "Ja"您需要将每个条件分开,如下所示:

string s = Console.ReadLine(); 
if(s == "ja" || s == "Ja")

或者你可以使用:

if(s.ToLower() == "ja")

答案 1 :(得分:1)

string s; 
s = Console.ReadLine();
if(s == "ja" || s== "Ja")
{    

}

答案 2 :(得分:0)

这不是有效的C#语法。在if语句内部应该有一个导致布尔值的评估。无法在内部声明新变量,s == "ja" || "Ja"也没有任何意义。

答案 3 :(得分:0)

C#不允许这样的事情。尝试以下内容:

string s = Console.ReadLine() ;

bool isEndOfFile = s == null ; // Console.ReadLine() returns null at end-of-file
if ( isEndOfFile ) throw new Exception( "That was unexpected!" ) ;

bool isYes = !isEndOfFile && s.Trim().Equals( "Ja" , StringComparison.CurrentCultureIgnoreCase ) ;
if ( isYes )
{
  HandleYesInput() ;
}

一般来说,保持简单。 故意编程将帮助您:以声明的方式工作,使用小的离散方法和局部变量作为您正在测试的每个条件的标志来表达您的意图,而不是尝试在一个复杂的表达。你可以这样做:

string s = null ;
if ( (s=Console.ReadLine()) && s != null && s.Trim().Equals("Ja",StringComparison.CurrentCulture.IgnoreCase) )
{
  ...
}

以牺牲可读性,可追溯性和可调试性为代价,您获得了一点简洁。如果您的代码没有按预期工作,您认为哪个版本更易于理解或诊断和修复?如果分配修复问题的任务的人不理解代码或者他们想要完成什么并且必须快速加速,这就是三倍。

那个人可能就是你,看着你5年前写的代码。