我有一个搜索图像的公共方法,如果图像存在,则将其作为字节数组返回.
如果图像不存在,该方法应该返回什么?(不存在的图像不是例外,但预期的可能性)
我应该返回一个空byte[]数组,还是应该返回byte?[]设置为null?
哪一个更符合惯例?
我有以下代码:
var file = //Memory stream with a file in it
var bytes = file.ToArray();
Run Code Online (Sandbox Code Playgroud)
我需要搜索bytes指定字节序列的第一次出现(如果有的话):0xff, 0xd8。(这样做的目的是找到嵌入在文件中的图像)
因此,如果例如bytes[6501]contains0xff和bytes[6502] contains 0xd8,那是一个匹配项,我需要返回的位置的索引(6501),或者一个新数组,它是字节数组的副本,除非它没有低于 6501 的键来自旧数组。
我目前的解决方案是循环:
for (var index = 0; index < bytes.Length; index++)
{
if((new byte[] {0xff, 0xd8}).SequenceEqual(bytes.Skip(index).Take(2))
...
Run Code Online (Sandbox Code Playgroud)
但是在处理更大的文件时它非常慢。
有没有更有效的方法来处理这个问题?
我有一个像这样的位图:
var map = new WriteableBitmap(800,800,800,800, PixelFormats.Bgr32,null);
Run Code Online (Sandbox Code Playgroud)
然后我有一个 50x50 png 图片,我想将其合并到此位图(包括透明度)中,位置偏移量为 top 100 left 150(从位图的左上角开始)
var img = new BitmapImage(new Uri(@"D:\test.png", UriKind.Absolute));
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的事情 map.WritePixels(img);,但这只会引发错误。如何将此图像合并到位图中?
假设我有两个类:
class Batman
{
public void Robin(){...}
public void Jump(){...}
}
class Superman
{
public void Kryptonie(){...}
public void Jump(){...}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有一个这样的类的实例:
public object Crossover()
{
var batman = new Batman();
var superman = new Superman();
return superman;
}
Run Code Online (Sandbox Code Playgroud)
我不知道Crossover将返回哪个类的实例,它可能是蝙蝠侠或超人.
var someVariableName = Crossover(); //I don't know if this contains an instance of Superman or Batman;
//I do know that no matter which class instance is returned, it will always contain a function named Jump which i want to trigger: …Run Code Online (Sandbox Code Playgroud) 我正在执行一个SQL查询(system.data.SQLite),如下所示:
var color = "red";
var command = new SQLiteCommand("SELECT something FROM tabletop WHERE color = '" + color + "'", Connection);
var reader = command.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
颜色变量是用户提供的文本.如何逃避此文本以防止SQL注入?或者这是一种不好的做法,我应该以一种完全不同的"受保护"方式执行查询?