【问题标题】:Cannot implicitly Convert Type (C# and Visual Studio) [closed]无法隐式转换类型(C# 和 Visual Studio)[关闭]
【发布时间】:2022-01-06 16:21:55
【问题描述】:

按照教程学习如何构建数独求解器。创建了两个文件,作为数据文件夹的 SudokuMap.cs 和包含在 Workers 文件夹中的 SudokuMapper.cs。 SudokuMapper.cs 应该映射 9 x 9 网格内的行和列。

'SudokuMapper.cs'中的return语句旁边出现follow错误。

Cannot implicitly convert type 'SudokuSolver.Data.SudokuMap' to 'SudoSolver.Workers.SudokuMapper'

关于如何修复此错误的任何想法?我仔细检查了代码的最终版本,一切都完全一样。

这是上下文的代码。

SudokuMapper.cs

using SudokuSolver.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SudokuSolver.Workers
{
    class SudokuMapper
    {
        public SudokuMapper Find(int givenRow, int givenCol)
        {
            SudokuMap sudokuMap = new SudokuMap();

            if ((givenRow >= 0 && givenRow <= 2) && (givenCol >= 0 && givenCol <= 2))
            {
                sudokuMap.StartRow = 0;
                sudokuMap.StartCol = 0;
            }

            else if ((givenRow >= 0 && givenRow <= 2) && (givenCol >= 3 && givenCol <= 5))
            {
                sudokuMap.StartRow = 0;
                sudokuMap.StartCol = 3;
            }

            else if ((givenRow >= 0 && givenRow <= 2) && (givenCol >= 6 && givenCol <= 8))
            {
                sudokuMap.StartRow = 0;
                sudokuMap.StartCol = 6;
            }


            if ((givenRow >= 3 && givenRow <= 5) && (givenCol >= 0 && givenCol <= 2))
            {
                sudokuMap.StartRow = 3;
                sudokuMap.StartCol = 0;
            }

            if ((givenRow >= 3 && givenRow <= 5) && (givenCol >= 3 && givenCol <= 5))
            {
                sudokuMap.StartRow = 3;
                sudokuMap.StartCol = 3;
            }

            if ((givenRow >= 3 && givenRow <= 5) && (givenCol >= 6 && givenCol <= 8))
            {
                sudokuMap.StartRow = 3;
                sudokuMap.StartCol = 6;
            }

            if ((givenRow >= 6 && givenRow <= 8) && (givenCol >= 0 && givenCol <= 2))
            {
                sudokuMap.StartRow = 6;
                sudokuMap.StartCol = 0;
            }

            if ((givenRow >= 6 && givenRow <= 8) && (givenCol >= 3 && givenCol <= 5))
            {
                sudokuMap.StartRow = 6;
                sudokuMap.StartCol = 3;
            }

            if ((givenRow >= 6 && givenRow <= 8) && (givenCol >= 6 && givenCol <= 8))
            {
                sudokuMap.StartRow = 6;
                sudokuMap.StartCol = 6;
            }
            return sudokuMap;
        }
    }
}

数独地图.cs

namespace SudokuSolver.Data
{
    class SudokuMap
    {
        public int StartRow { get; set; }
        public int StartCol { get; set; }
    }
}

【问题讨论】:

  • SudokuMapperSudokuMap 不一样。检查您的退货类型。本教程可能做错了,但请仔细查看以确保。

标签: c# visual-studio


【解决方案1】:

这只是一个错字。你的Find 方法被写入返回SudokuMapper,而不是SudokuMap

在此处更改此行:

public SudokuMapper Find(int givenRow, int givenCol)

收件人:

public SudokuMap Find(int givenRow, int givenCol)

IMO,此错误消息令人困惑。你得到这个是因为编译器正在寻找一种将SodukuMap 转换为SodukuMapper 的方法但找不到。它可能应该包含类似于“预期返回类型 X,得到 Y”的内容。

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2021-09-07
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多