我试图通过反射向IList添加项目,但在调用"添加"方法时,抛出错误"对象引用未设置".在调试时我发现GetMethod("Add")返回了一个NULL引用.
Type objTyp = typeof(MyObject); //HardCoded TypeName for demo purpose
var IListRef = typeof (List<>);
Type[] IListParam = {objTyp};
object Result = IListRef.MakeGenericType(IListParam);
MyObject objTemp = new MyObject();
Result.GetType().GetMethod("Add").Invoke(Result, new[] {objTemp });
Run Code Online (Sandbox Code Playgroud)
请帮忙.
我刚刚对数组运行了一些简单的调试,并注意到当我执行数组的var_dump()时,输出会标记数组中由另一个变量引用的任何元素.作为一个简单的实验,我运行了以下代码:
$array = range(1,4);
var_dump($array);
echo '<br />';
foreach($array as &$value) {
}
var_dump($array);
echo '<br />';
$value2 = &$array[1];
var_dump($array);
echo '<br />';
Run Code Online (Sandbox Code Playgroud)
它给出了以下输出:
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) }
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> ?(4) }
array(4) { [0]=> int(1) [1]=> ?(2) [2]=> int(3) [3]=> ?(4) }
Run Code Online (Sandbox Code Playgroud)
注意?元素3旁边的符号和随后的元素1.还请注意,这些条目不显示条目的数据类型.
经过一些实验,如果我使用var_dump标量类型,或者使用对象或资源,我都不会看到这个.如果数组包含字符串数据,则符号为&(并且它仍然显示数据类型),同样具有float,boolean和object条目.
这是针对PHP 5.2.8运行的
第一个问题:这种行为是什么时候开始的,或者是我之前没有注意到的事情?
第二个问题:如果引用元素可以通过var_dump()以这种方式标记,那么核心PHP中是否有任何函数可以识别数组元素是否被另一个变量引用; 或者将从_zval_struct返回refcount或ref标志?
我曾在Javaranch上问过这个问题,但在那里得不到答复.所以在这里发布它:
我有这个特殊要求,其中循环变量的增量是通过在每次迭代后将其乘以5来完成的.在Java中,我们可以这样实现它:
for(int i=1;i<100;i=i*5){}
Run Code Online (Sandbox Code Playgroud)
在scala我尝试以下代码 -
var j=1
for(i<-1.to(100).by(scala.math.pow(5,j).toInt))
{
println(i+" "+j)
j=j+1
}
Run Code Online (Sandbox Code Playgroud)
但它的打印输出如下:1 1 6 2 11 3 16 4 21 5 26 6 31 7 36 8 ....
它总是递增5.那么我如何实际将增量乘以5而不是添加它.
是否有适合.NET的OSS URI操作类?
请不要建议BCL Uri
课程,或所有其他方式的手动黑客,我可以做几乎无用的事情.
我正在寻找一个强大的库来处理所有不同形式的uris(相对的,绝对的,有/没有查询字符串等),让我以优雅的方式访问和操作所有片段.
谢谢
我写了一个服务器,它正在监听TCP连接和连接它的客户端.当我关闭服务器并在同一端口重新启动它时,我有时会在调用bind(...)时收到错误消息EADDRINUSE(Linux上的错误代码:98).即使我设置了重用套接字的选项,也会发生这种情况.
错误不会一直发生,但似乎当客户端连接到服务器并在关闭时发送数据时,它会更频繁地发生.我想问题是服务器关闭时仍有未决连接(相关主题:https://stackoverflow.com/questions/41602/how-to-forcibly-close-a-socket-in-time-wait).
在服务器端,我使用boost :: asio :: ip :: tcp :: acceptor.我使用选项"reuse_address"对其进行初始化(请参阅http://beta.boost.org/doc/libs/1_38_0/doc/html/boost_asio/reference/basic_socket_acceptor.html).这是代码片段:
using boost::asio::ip::tcp;
acceptor acceptor::acceptor(io_service);
endpoint ep(ip::tcp::v4(), port);
acceptor.open(ep.protocol());
acceptor.set_option(acceptor::reuse_address(true));
acceptor.bind(ep);
acceptor.listen();
Run Code Online (Sandbox Code Playgroud)
接受者关闭时:
acceptor.close();
Run Code Online (Sandbox Code Playgroud)
我之前也尝试过使用acceptor.cancel(),但它具有相同的效果.发生此错误时,我无法在同一端口上重启服务器很长一段时间.重新启动网络有帮助,但不是永久解决方案.
我错过了什么?
任何帮助将不胜感激!:)
我希望从javascript中的字符串int我如何从中得到它们
test1,stsfdf233,fdfk323,
有没有人告诉我从这个字符串中获取整数的方法.
这是一个规则,int总是在字符串的后面.
我怎么能得到最后在我的字符串中的int
我的书"Hello Android"将此作为一种使用自定义db帮助程序,设置游标,然后按如下方式设置适配器的方法:
Cursor cursor
CustomDatabaseHelper test = new CustomDatabaseHelper(this);
try {
cursor = getData();
showData(cursor);
} finally {
test.close();
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我需要刷新数据集时,我需要继续运行这段代码(由于"this"不可用,因此在按钮的onClick()中会有点困难.
这是刷新数据集的最佳方法,还是应该删除.close并发出adapter.notifyDataSetChanged()?如果我这样做,有时我会得到一个强制关闭(我现在不记得)但有时它无法正确删除 - 我想这可能是因为数据库当前是打开的并且它试图再次打开.
我们是否还要在Class中(在OnCreate之外)声明Cursors,DatabaseHelpers和Adapter的变量,以便所有函数都可以访问它们?
我意识到这只是在这个阶段的糟糕编程,但我试图得到一些关于最佳做事方式的指示.
当我在eclipse中编辑xml时,有没有人知道是否有可能用xsd验证xml?
这就是我的xml开始的方式:
<root
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../definitions.xsd">
Run Code Online (Sandbox Code Playgroud)
我有一个数据网格视图,它与Winform上的面板对接并锚定.当我调整表单大小时,datagridview按预期调整大小,但列不会调整大小以适应datagridview.相反,我留下了Datagridview的背景颜色.
如何通过控件使列增长?
谢谢.
有没有一种方法来读取当前屏幕的帧缓冲区?我搜索了一些关于帧缓冲区的数据.有人使用glReadPixels方法,但信息不够.有谁知道如何详细阅读当前帧缓冲区?
谢谢你的帮助.
c# ×3
android ×2
boost ×1
boost-asio ×1
c++ ×1
datagridview ×1
eclipse ×1
framebuffer ×1
javascript ×1
listview ×1
loops ×1
php ×1
reference ×1
reflection ×1
refresh ×1
scala ×1
sockets ×1
validation ×1
var-dump ×1
winforms ×1
xml ×1
xsd ×1