无法隐式转换类型(C# 和 Visual Studio)[关闭]

Posted

技术标签:

【中文标题】无法隐式转换类型(C# 和 Visual Studio)[关闭]【英文标题】:Cannot implicitly Convert Type (C# and Visual Studio) [closed] 【发布时间】: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 不一样。检查您的退货类型。本教程可能做错了,但请仔细查看以确保。 【参考方案1】:

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

在此处更改此行:

public SudokuMapper Find(int givenRow, int givenCol)

收件人:

public SudokuMap Find(int givenRow, int givenCol)

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

【讨论】:

以上是关于无法隐式转换类型(C# 和 Visual Studio)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C#错误(无法将类型'string'隐式转换为'int')[重复]

C# Unity 无法将浮点类型隐式转换为 int [关闭]

无法在 C# 中将类型“System.EventHandler”隐式转换为“System.Windows.Forms.KeyPressEventHandler”[重复]

向启用文本框 (C#) 的 Web 部件添加按钮,出现错误:无法将类型“bool”隐式转换为“字符串”

C#中提示无法将string隐式转换为bool类型,请问怎么办?

C#中的类型转换-自定义隐式转换和显式转换