快速提问; 执行安全演员后,我是否总是需要检查空值?我现在这样做,但在这种情况下:
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#中进行一些图像处理.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) 好的,我正在尝试使用以下代码加载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文件?
我创建了名为style.php的css页面并将其包含在顶部:
<?php header("Content-type: text/css"); ?>
这会让你畏缩吗?这是一个糟糕的主意吗?我这样做是因为我创建了一个CMS,允许管理员控制页面上的颜色(因此style.php脚本查询数据库并获取十六进制值).
有什么想法吗?
我想剪切图片的特定部分,并用它来比较裁剪后的图像与HDD中存储的图像.问题是我不知道如何获得源图像的特定部分.我知道要裁剪的图像的位置(X,Y).
所以我目前正在开发一个用WPF编写的UI.我真正喜欢WPF的一个方面是它引导你编写更多分离的,独立的UI组件的方式.对于我来说,WPF的一个难点在于它会引导您编写更多分离的,孤立的UI组件,这些组件有时需要彼此通信:).这可能是由于我相对缺乏UI体验,特别是在WPF中(我不是新手,但我的大多数工作都比UI设计低得多).
无论如何,这是情况:
在任何时候,UI的中心区域显示实现为UserControls 的三个视图之一,让我们称它们为视图A,B和C.
用户将在不同时间在这些视图之间切换,并且有多种方法可以切换视图(这对客户很有效,导致当前代码设计有些麻烦).
现在,每个视图切换机制都可以自己转换到另一个视图.某个单例类负责存储数据并在视图之间进行通信.我不喜欢这个,它很混乱,容易出错,并且单例类对UI的细节知之甚少.我想尽可能地消除它.
我今天碰到了一个与视图之间切换时间有关的错误.为简化起见,一个视图在卸载时需要执行一些清理,但清理会清除另一个视图所需的一些数据.如果在加载其他视图后运行清理,则会出现问题.明白了吗?乱.
我试图退后一步,想象一种不同的方式来使这些视图加载他们完成工作所需的数据.你们中的一些人更有经验的UI/WPF人员一定遇到过类似的问题.我有几个想法,但我希望有人会在这里向我提出一个更清洁的方法.我不喜欢依赖于操作的顺序(在高级别)我的代码才能正常工作.提前感谢您提供的任何帮助.
我正在尝试为一些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)
这里没什么可疯狂的.但是,如果我创建一个模板并将其直接粘贴到它(同一个项目),则无法找到以下类型:
我只需要TypeMapper,但我不明白为什么相同的模板代码在新模板中不起作用,但在默认的EF文件中运行得很好.
这两个类都不容易找到文档.我想如果我能找到哪个程序集定义TypeMapper我可以手动添加引用并担心以后的一般怪异,但事实证明这比我预期的要困难.
那么如何才能将此类型导入我的模板?在我等待答案的时候,我会通过EF 6来源.
我很尴尬不得不问这样一个问题,但我很难搞清楚如何通过.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) 这两个是等价的吗?
int a=10;
int *p=a;
AND
int a=10;
int *p;
p=&a;
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,p是否保留a的地址!?
我无法通过引用获得简单的传递,以我期望的方式工作.拳头关闭,当我编译时,我得到以下警告:
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)
这里出了什么问题?