小编Ed *_* S.的帖子

我*总是*必须在安全演员后检查是否为空?

快速提问; 执行安全演员后,我是否总是需要检查空值?我现在这样做,但在这种情况下:

void button1_Click(object sender, EventArgs e)
{
    Button = sender as Button;
    if (button != null)  // <-- necessary?
    {
        // do stuff with 'button'
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道我是不是在想什么.我每次出于习惯都会检查null,但是在这种情况下,我认为如果非Button对象连接到应该只用于按钮的处理程序,我宁愿崩溃.

编辑:好的,谢谢你们.如果有一个我失踪的角度,我只是好奇.

c#

4
推荐指数
2
解决办法
742
查看次数

为什么我的图像看起来像Bgra而不是Argb?

所以,我对我刚刚跑过的快速测试非常困惑.我在C#中进行一些图像处理.Get/SetPixel()已被证明太慢,所以我使用LockBits来获取原始数据.

但是,我似乎遇到了一个我无法弄清楚的情况.在扫描图像时,似乎每个像素按照顺序布置为Bgra,即蓝色字节,绿色字节,红色字节和alpha.我的印象是他们将以Argb的顺序排列.这是我正在使用的代码示例.

BitmapData baseData =
    m_baseImage.LockBits(new Rectangle(new Point(0, 0), m_baseImage.Size), 
        ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
Bitmap test = new Bitmap(m_baseImage.Width, m_baseImage.Height);           

byte* ptr = (byte*)baseData.Scan0;
for (int y = 0; y < m_baseImage.Height; ++y)
{                              
    for (int x = 0; x < m_baseImage.Width; ++x)
    {
        // this works, image is copied correctly
        Color c1 = Color.FromArgb(*(ptr + 3), *(ptr + 2), *(ptr + 1), *ptr);
        // below does not work!  Bytes are reversed.
        //Color c1 = Color.FromArgb(*ptr, *(ptr + 1), *(ptr + 2), …
Run Code Online (Sandbox Code Playgroud)

c# image-processing lockbits

4
推荐指数
2
解决办法
2550
查看次数

文件未找到.为什么不?

好的,我正在尝试使用以下代码加载Java文件:

String file = "map.mp";
URL url = this.getClass().getResource(file);
System.out.println("url = " + url);
FileInputStream x = new FileInputStream("" + url);
Run Code Online (Sandbox Code Playgroud)

尽管在同一个文件夹中的类文件是它说,它不能找到它(是的,这在充分代码try catch块).

但是,它找到另一个使用不同名称的相同代码的文件:

URL url = this.getClass().getResource("default.png");
System.out.println("url2 = " + this.getClass().getResource("default.png"));
BufferedImage img = ImageIO.read(url);
Run Code Online (Sandbox Code Playgroud)

为什么我的代码找不到我的map.mp文件?

java io file-io file

4
推荐指数
1
解决办法
4875
查看次数

在css文档中使用php是一个坏主意吗?

我创建了名为style.php的css页面并将其包含在顶部:

<?php header("Content-type: text/css"); ?>

这会让你畏缩吗?这是一个糟糕的主意吗?我这样做是因为我创建了一个CMS,允许管理员控制页面上的颜色(因此style.php脚本查询数据库并获取十六进制值).

有什么想法吗?

css php

3
推荐指数
1
解决办法
399
查看次数

获取特定的图像部分(图片)

我想剪切图片的特定部分,并用它来比较裁剪后的图像与HDD中存储的图像.问题是我不知道如何获得源图像的特定部分.我知道要裁剪的图像的位置(X,Y).

.net c# image-manipulation winforms

3
推荐指数
1
解决办法
2万
查看次数

在WPF中切换视图,高级设计问题

所以我目前正在开发一个用WPF编写的UI.我真正喜欢WPF的一个方面是它引导你编写更多分离的,独立的UI组件的方式.对于我来说,WPF的一个难点在于它会引导您编写更多分离的,孤立的UI组件,这些组件有时需要彼此通信:).这可能是由于我相对缺乏UI体验,特别是在WPF中(我不是新手,但我的大多数工作都比UI设计低得多).

无论如何,这是情况:

在任何时候,UI的中心区域显示实现为UserControls 的三个视图之一,让我们称它们为视图A,B和C.

用户将在不同时间在这些视图之间切换,并且有多种方法可以切换视图(这对客户很有效,导致当前代码设计有些麻烦).

现在,每个视图切换机制都可以自己转换到另一个视图.某个单例类负责存储数据并在视图之间进行通信.我不喜欢这个,它很混乱,容易出错,并且单例类对UI的细节知之甚少.我想尽可能地消除它.

我今天碰到了一个与视图之间切换时间有关的错误.为简化起见,一个视图在卸载时需要执行一些清理,但清理会清除另一个视图所需的一些数据.如果在加载其他视图运行清理,则会出现问题.明白了吗?乱.

我试图退后一步,想象一种不同的方式来使这些视图加载他们完成工作所需的数据.你们中的一些人更有经验的UI/WPF人员一定遇到过类似的问题.我有几个想法,但我希望有人会在这里向我提出一个更清洁的方法.我不喜欢依赖于操作的顺序(在高级别)我的代码才能正常工作.提前感谢您提供的任何帮助.

wpf mvvm

3
推荐指数
1
解决办法
3058
查看次数

在什么程序集中是System.Data.Entity.ModelConfiguration.Mappers.TypeMapper定义的?

我正在尝试为一些EF 6.0内容构建一个简单的C#模板.我在定义所有Entity Framework对象的同一项目中创建了模板.但是,我似乎无法使用在Entity生成器中可以找到的某些类型,特别是TypeMapper.

这是我的Entity生成器T4文件的顶部:

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@  output extension=".cs"#>
<#
const string inputFile = @"EpicCloudDB.edmx";
#>
<#@ include file="EdmxEnumFixer.t4" #>
<#
var textTransform = DynamicTextTransformation.Create(this);
var code = new CodeGenerationTools(this);
var ef = new MetadataTools(this);
var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
var fileManager = EntityFrameworkTemplateFileManager.Create(this);
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);
var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
#>
Run Code Online (Sandbox Code Playgroud)

这里没什么可疯狂的.但是,如果我创建一个模板并将其直接粘贴到它(同一个项目),则无法找到以下类型:

  1. TypeMapper
  2. CodeStringGenerator
  3. EdmMetadataLoader

我只需要TypeMapper,但我不明白为什么相同的模板代码在新模板中不起作用,但在默认的EF文件中运行得很好.

这两个类都不容易找到文档.我想如果我能找到哪个程序集定义TypeMapper我可以手动添加引用并担心以后的一般怪异,但事实证明这比我预期的要困难.

那么如何才能将此类型导入我的模板?在我等待答案的时候,我会通过EF 6来源.

.net t4 entity-framework

3
推荐指数
1
解决办法
1157
查看次数

如何正确地从.NET中的SerialPort读取

我很尴尬不得不问这样一个问题,但我很难搞清楚如何通过.NET SerialPort类在串口上可靠地读取数据.

我的第一个方法:

static void Main(string[] args)
{
    _port = new SerialPort
    {
        PortName = portName,
        BaudRate = 57600,
        DataBits = 8,
        Parity = Parity.None,
        StopBits = StopBits.One,
        RtsEnable = true,
        DtrEnable = false,
        WriteBufferSize = 2048,
        ReadBufferSize = 2048,
        ReceivedBytesThreshold = 1,
        ReadTimeout = 5000,
    };    

    _port.DataReceived += _port_DataReceived;
    _port.Open();

    // whatever
}

private void _port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{           
    var buf = new byte[_port.BytesToRead];
    var bytesRead = _port.Read(buf, 0, buf.Length);

    _port.DiscardInBuffer();
    for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c# io serial-port

3
推荐指数
1
解决办法
9258
查看次数

C,C++中的指针

这两个是等价的吗?

int a=10;
int *p=a; 

AND

int a=10;
int *p;
p=&a;
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,p是否保留a的地址!?

c pointers

2
推荐指数
1
解决办法
148
查看次数

在C中通过引用无效

我无法通过引用获得简单的传递,以我期望的方式工作.拳头关闭,当我编译时,我得到以下警告:

warning: value computed is not used [-Wunused-value]
Run Code Online (Sandbox Code Playgroud)

其次,我希望在程序结束时打印2,而不是1.

$ ./testAdd
1
Run Code Online (Sandbox Code Playgroud)

这是简单的代码:

#include <stdio.h>

void addone(int *j) {
  *j++;
}

int main(int argc, char *argv[])
{
  int i = 1;

  addone(&i);

  printf("%d\n", i);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?

c operator-precedence

2
推荐指数
1
解决办法
348
查看次数