我想使用Linq查询2D数组,但是我收到一个错误:
找不到源类型'SimpleGame.ILandscape [ , ]' 的查询模式的实现.找不到"选择".您是否缺少对'System.Core.dll'的引用或'System.Linq'的using指令?
代码如下:
var doors = from landscape in this.map select landscape;
Run Code Online (Sandbox Code Playgroud)
我已经检查过我包含的参考System.Core和使用System.Linq.
谁能给出一些可能的原因?
当我尝试在C#中重载operator ==和!=并按推荐重写Equal时,我发现我无法区分普通对象和null.例如,我定义了一个类Complex.
public static bool operator ==(Complex lhs, Complex rhs)
{
return lhs.Equals(rhs);
}
public static bool operator !=(Complex lhs, Complex rhs)
{
return !lhs.Equals(rhs);
}
public override bool Equals(object obj)
{
if (obj is Complex)
{
return (((Complex)obj).Real == this.Real &&
((Complex)obj).Imaginary == this.Imaginary);
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我想用的时候
if (temp == null)
Run Code Online (Sandbox Code Playgroud)
当temp真的为null时,会发生一些异常.并且我不能使用==来确定lhs是否为null,这将导致无限循环.
在这种情况下我该怎么办
我能想到的一种方法是给我们一些像Class.Equal(对象,对象)(如果它存在的话)在我做检查时绕过==.
解决问题的正常方法是什么?
谢谢.
我试图捕获异常,但编译器发出警告:此类型测试或向下转换将始终保持
let testFail () =
try
printfn "Ready for failing..."
failwith "Fails"
with
| :? System.ArgumentException -> ()
| :? System.Exception -> ()
Run Code Online (Sandbox Code Playgroud)
问题是:如何在没有警告的情况下这样做?(我相信必须有办法做到这一点,否则应该没有警告)
喜欢C#
try
{
Console.WriteLine("Ready for failing...");
throw new Exception("Fails");
}
catch (Exception)
{
}
Run Code Online (Sandbox Code Playgroud) 我是C#的新手,早些时候我看到了lambda表达式
(params) => { expression;}
Run Code Online (Sandbox Code Playgroud)
但是在LINQ中,我看到了类似的例子
IEnumerable<string> customerFirstNames = customers.Select(cust => cust.FirstName);
Run Code Online (Sandbox Code Playgroud)
没有括号.
它们是相同的还是有什么区别?
非常感谢.
当我使用F#时,我有一种奇怪的行为.当我在模块中使用let绑定时,如果值是从构造函数创建的,那么在外部使用时它是未初始化的.(我使用ModuleName.s2或ModuleName.f()从C#中使用它)
//in a module
let s1 = "1" //normal
let s2 = new String('i', 5) //null
let f () =
s2.Equals("something") //Exception
Run Code Online (Sandbox Code Playgroud)
这是正常行为吗?提前致谢.
编辑:为了调试,我选择将其编译为可执行文件.这可能是其他人指出的问题.
我尝试使用元组来创建F#中定义的类的新实例.为了复制问题,我尝试了以下代码.
type test(x: int, y:int) =
let distance =
x * x + y * y |> float |> sqrt
new (x: int, y:int, z:int) =
new test(x, y)
let args = 1, 2
let test2 = new test(args)
Run Code Online (Sandbox Code Playgroud)
它抱怨说
错误1成员或对象构造函数'test'不带1个参数.发现过载有2个参数.
如果我删除非默认构造函数,一切都很好.我不明白为什么它变成两个/三个参数而不是元组.
非常感谢你.
我找到了一种在互联网上洗牌的方法.
Random rand = new Random();
shuffledArray = myArray.OrderBy(x => rand.Next()).ToArray();
Run Code Online (Sandbox Code Playgroud)
但是,我有点担心这种方法的正确性.如果OrderBy x => rand.Next()对同一个项执行多次,结果可能会发生冲突并导致奇怪的事情(可能是异常).
我尝试过,一切都很好,但我仍然想知道这是否绝对安全,并且始终按预期工作,我无法通过Google找到答案.
谁能给我一些解释?
提前致谢.
我发现在F#中搜索简单的缩进指南非常困难.基本上,我想知道多行语句缩进的规则是什么.在C#中,没有问题,因为空白不计算在内.虽然我可以根据自己的直觉编写F#代码并且它有效但我真的想知道将一个语句分成多行的规则是什么.我写的是
printfn "%d"
1
Run Code Online (Sandbox Code Playgroud)
它按预期工作
如果我把它们写在同一列中,就会出错.
>
printfn "%A%A"
1
[];;
> //nothing is returned... and no error in this case
Run Code Online (Sandbox Code Playgroud)
我想确认这样做的基本规则.当你无法确定自己在做什么时,这有点烦人.
提前致谢
我刚试了另一个案子
List.iter
(printfn "%d")
[1..10];;
Run Code Online (Sandbox Code Playgroud)
它打印出1到10.为什么不是
List.iter
((printfn "%d")
[1..10]);;
Run Code Online (Sandbox Code Playgroud) 我试图在EmguCV 3.1中运行LicensePlateRecognition的示例.但我总是得到错误System.DllNotFoundException,消息是"无法加载cvextern.dll".我使用Visual Studio 2013运行Windows 7(计算机由我公司提供).
我将文件夹中的所述dll和其他一些dll复制到debug文件夹(配置文件设置为调试模式,我尝试了x86和x64版本).在一次又一次地收到错误后,我开始怀疑这是因为我的视频卡驱动程序(一些谷歌搜索结果如此).我更新了,错误仍然存在.
经过一番谷歌搜索后,我找到了依赖步行者.缺少一个文件"IEShims.dll".我下载了它并将其放入调试文件夹中,没有运气.
我认为一些输出可能是相关的.
从C:\ Emgu\emgucv-windesktop 3.1.0.2282\bin\x64加载打开的cv二进制文件
LoadLibraryEx C:\ Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\opencv_ffmpeg310_64.dll失败,错误代码为87:参数不正确.
无法加载文件C:\ Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\opencv_ffmpeg310_64.dll.
LoadLibraryEx C:\ Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\cvextern.dll失败,错误代码为87:参数不正确.
无法加载文件C:\ Emgu\emgucv-windesktop 3.1.0.2282\bin\x64\cvextern.dll.
有谁知道这有什么问题?
错误似乎源于
#if !UNITY_IPHONE
//Use the custom error handler
RedirectError(CvErrorHandlerThrowException, IntPtr.Zero, IntPtr.Zero);
#endif
Run Code Online (Sandbox Code Playgroud)
这是在方法中
/// <summary>
/// Attempts to load opencv modules from the specific location
/// </summary>
/// <param name="modules">The names of opencv modules. e.g. "opencv_cxcore.dll" on windows.</param>
/// <returns>True if all the modules has been loaded successfully</returns>
public static bool DefaultLoadUnmanagedModules(String[] modules)
Run Code Online (Sandbox Code Playgroud)
我试了整整一天才找到解决方案,但我真的不知道我现在能做些什么.任何帮助表示赞赏. …
我正在尝试使用Python提供的SQLite来实现一个简单的计数器.我正在使用CGI编写简单的动态网页.这是我能想到实现计数器的唯一简单方法.问题是我需要先读取计数器值然后更新它.但理想情况下,每个用户都应该读取一个唯一值,并且如果两个用户同时读取,则两个用户可以读取相同的计数器值.有一种简单的方法可以使读/写操作成为原子吗?我不熟悉SQL,所以请给出具体的陈述.提前致谢.
我使用一个列和一行来存储计数器.