无法隐式转换类型(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;
【问题讨论】:
SudokuMapper
和 SudokuMap
不一样。检查您的退货类型。本教程可能做错了,但请仔细查看以确保。
【参考方案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”隐式转换为“字符串”