【问题标题】:C# expecting brackets when none needed and other errors I can't seem to find solution toC# 需要括号时不需要和其他错误我似乎无法找到解决方案
【发布时间】:2022-01-12 02:49:24
【问题描述】:

我正在制作将从文件中读取 json 数据的类,但由于某些未知原因,我不断收到错误消息。我真的希望这不仅仅是我的愚蠢错误。

我的代码:- 不工作

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Blackjack
{
    class LeaderBoard
    {
        LeaderBoard(string fileName)
        {
            public string filename = fileName;
            if (!File.Exists(fileName))
            {
                File.Create(fileName);
            }
            private string contents = System.IO.File.ReadAllLines(fileName);
        }
    }
}

我的代码 - 工作

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Blackjack
{
    class LeaderBoard
    {
        LeaderBoard(string fileName)
        {
           
            if (!File.Exists(fileName))
            {
                File.Create(fileName);
            }
            
        }
    }
}

输出

Build started...
1>------ Build started: Project: Blackjack, Configuration: Debug Any CPU ------
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(13,10,13,10): error CS1513: } expected
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,13,15,15): error CS1519: Invalid token 'if' in class, record, struct, or interface member declaration
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,17,15,18): error CS1031: Type expected
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,17,15,18): error CS8124: Tuple must contain at least two elements.
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,17,15,18): error CS1026: ) expected
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,17,15,18): error CS1519: Invalid token '!' in class, record, struct, or interface member declaration
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,29,15,30): error CS1519: Invalid token '(' in class, record, struct, or interface member declaration
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,38,15,39): error CS8124: Tuple must contain at least two elements.
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(15,39,15,40): error CS1519: Invalid token ')' in class, record, struct, or interface member declaration
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(17,28,17,29): error CS1519: Invalid token '(' in class, record, struct, or interface member declaration
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(17,37,17,38): error CS8124: Tuple must contain at least two elements.
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(17,38,17,39): error CS1519: Invalid token ';' in class, record, struct, or interface member declaration
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(21,5,21,6): error CS1022: Type or namespace definition, or end-of-file expected
1>C:\Users\ASUS\RiderProjects\Blackjack\Blackjack\Leaderboard.cs(22,1,22,2): error CS1022: Type or namespace definition, or end-of-file expected
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我真的不知道出了什么问题……那个缺少的分号在哪里?

【问题讨论】:

  • 非常感谢!没想到File.ReadAllText不会输出字符串
  • 是的(除其他外)你有 ReadAllLines 输出一个字符串数组 ReadAllText 输出一个字符串

标签: c# file debugging error-handling


【解决方案1】:

您不能在类成员中使用访问修饰符,它们只能应用于类成员本身:

class LeaderBoard
{
    public string filename;
    private string[] contents;

    LeaderBoard(string fileName)
    {
        filename = fileName;
        if (!File.Exists(fileName))
        {
            File.Create(fileName);
        }
        contents = System.IO.File.ReadAllLines(fileName);
    }
}

【讨论】:

    【解决方案2】:

    问题是您在类的构造函数中使用了公共和私有。您还应该将内容定义为字符串数组。

    namespace Blackjack
    {
        class LeaderBoard
        {
            LeaderBoard(string fileName)
            {
                string filename = fileName;
                if (!File.Exists(fileName))
                {
                    File.Create(fileName);
                }
                string[] contents = System.IO.File.ReadAllLines(fileName);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:
      using System;
      using System.Collections.Generic;
      using System.IO;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace Blackjack
      {
          class LeaderBoard
          {
              public string LeaderBoard(string fileName)
              {
                  string fileContent;
                  if (!File.Exists(fileName))
                  {
                      File.Create(fileName);
                  }
                  using (var sr = new StreamReader(fileName)) {
                      if(sr.ReadToEnd() == null) {
                          return "File is empty";
                      }
                      fileContent = sr.ReadToEnd();
                  }
                  return fileContent;
              }
          }
      }
      

      已编辑,可能会好一点。

      试试这个:)

      【讨论】:

      • 使用FileInfo 来检查长度和StreamReader 对于Extreme 来说是冗长和多余的:) 看看我在那里做了什么?
      猜你喜欢
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 2021-12-19
      • 2019-11-17
      • 2022-11-03
      相关资源
      最近更新 更多