C#错误:operator'!='不能应用于'char'和'string'类型的操作数

Nen*_*vic 2 c# string operators char

今天,按照书中的教程(字面意思),我遇到了一个意想不到的错误:

operator '!=' cannot be applied to operands of type 'char' and 'string'
Run Code Online (Sandbox Code Playgroud)

在这部分代码中:

public void displayFullName()
{
    StringBuilder FullName = new StringBuilder();

    FullName.Append(firstName);
    FullName.Append(" ");
    if (middleName[0] != "") //ERROR occurs here
    {
        FullName.Append(middleName[0]);
        FullName.Append(". ");
    }
    FullName.Append(lastName);

    Console.WriteLine(FullName);
}
Run Code Online (Sandbox Code Playgroud)

当然,middleName声明为:

    class Person
{
    private string firstName;
    private string middleName; //obiously declared as string
    private string lastName;
    private int age;
(...the rest of code...)
Run Code Online (Sandbox Code Playgroud)

那么,问题是你将如何解决这个错误?

Jon*_*eet 10

那么,问题是你将如何解决这个错误?

这取决于你想要达到的目标.让我们来看看有问题的一行:

if (middleName[0] != "")
Run Code Online (Sandbox Code Playgroud)

你真的想在这里确定什么?询问middleName(middleName[0]返回的)的第一个字符是否为空字符串是没有意义的.如果你一直在检查它是否等于"X"(或其他一些单字符串)那么我可能认为你想要的if (middleName.StartsWith(...)).

但是如果你真的只想找出middleName是不是空的,你可以使用:

if (middleName != "")
Run Code Online (Sandbox Code Playgroud)

或者如果middleName也可以为null并且您想要检测到它,您可能需要:

if (!string.IsNullOrEmpty(middleName))
Run Code Online (Sandbox Code Playgroud)

事实上,如果middleName是空的,那么middleName[0]就扔掉了IndexOutOfRangeException.

作为一个副作用 - 除非这是一次性的,它建议你应该找一本不同的书.虽然错误可能会漏掉,但你真的应该能够期望书中的代码能够编译(除非它试图证明失败).您可能需要编辑您的问题点名批评这本书有问题:)(即它使用的方法名称的事实displayFullName和变量名FullName在C#中也有所毁灭性的.)