为什么之前声明变量时它不起作用?



我花了几个小时处理一个edabit挑战,最后,我错误地解决了这个挑战。

以下是不起作用的:

/*****************************/ 
public static bool IsStrangePair(string str1, string str2)
{
char firstCharInStr1 = str1[0];
char lasttCharInStr1 = str1[str1.Length-1];
char firstCharInStr2 = str2[0];
char lasttCharInStr2= str2[str2.Length-1];

if (str1.Length == 0 && str2.Length == 0)
return true;
if (str1.Length == 0 || str2.Length == 0)
return false;
return firstCharInStr1 == lasttCharInStr2 && lasttCharInStr1 == firstCharInStr2;
}

所以我在一开始就添加了IsNull,它起作用了:S-为什么

public static bool IsStrangePair(string str1, string str2)
{
// A What I add after
if(string.IsNullOrEmpty(str1) || string.IsNullOrEmpty(str2))
{
return str1 == str2;
}
char firstCharInStr1 = str1[0];
char lasttCharInStr1 = str1[str1.Length-1];
char firstCharInStr2 = str2[0];
char lasttCharInStr2= str2[str2.Length-1];

// B-----My first idea
if (str1.Length == 0 && str2.Length == 0)
return true;

if (str1.Length == 0 || str2.Length == 0)
return false;
return firstCharInStr1 == lasttCharInStr2 && lasttCharInStr1 == firstCharInStr2 ;

我不明白为什么它是有效的,因为我的印象是我的A";CCD_ 2溶液";是我第一个想法的重复,所以(对我来说(这太疯狂了。

所以我明白(我认为(我必须在A或B之间做出选择,关键是在我的B或A之后声明我的变量(我也选择了B或A(

所以我很困惑,因为我认为我们必须在开始/使用它之前声明变量。为什么当我的变量首先声明时它不起作用?

我希望我能清除

首次启动时,Null可能会令人困惑。Null不是一个实际值,而是一个空指针(如果您熟悉指针的话(。这意味着您已经声明了一个名称,但实际上并没有指向任何值。

想象一下,你已经声明想要一栋类型为豪宅的房子,但没有声明地址。打开大门是不可能的,但你可以检查一下地址是否不在。

您可以检查null,甚至在某些情况下可以将其用于您的利益,但在您的情况下,您试图在一个不存在(为null(的东西中使用[0]。

因此,您可以选择使用字符串。IsNullOrEmpty(字符串待测试(;

在dot.net 6中,你会发现所有变量都有可能为空的绿色虚线。

最新更新