考虑:
using System;
public class Test
{
enum State : sbyte { OK = 0, BUG = -1 }
static void Main(string[] args)
{
var s = new State[1, 1];
s[0, 0] = State.BUG;
State a = s[0, 0];
Console.WriteLine(a == s[0, 0]); // False
}
}
Run Code Online (Sandbox Code Playgroud)
怎么解释这个?当在x86 JIT中运行时,它出现在Visual Studio 2015中的调试版本中.x64 JIT中的发布版本或运行按预期打印True.
要从命令行重现:
csc Test.cs /platform:x86 /debug
Run Code Online (Sandbox Code Playgroud)
(/debug:pdbonly,/debug:portable并且/debug:full还复制.)
来自https://source.dot.net/#System.Private.CoreLib/Hashtable.cs,475:
public virtual bool ContainsKey(object key!!)
Run Code Online (Sandbox Code Playgroud)
它看起来像两个 null-forgiving 运算符。有相关文件吗?
我的问题与确定的问题不同.显然我已经调用了"BeginErrorReadLine"方法(我在下面的代码中标记它).
我想解析Handle产生的结果
命令行
在命令行环境中运行时,它将输出如下内容:
> handle64 -p [PID]
Nthandle v4.11 - 处理查看器
版权所有(C)1997-2017 Mark Russinovich
Sysinternals - www.sysinternals.com
10:文件C:\ Windows
1C:文件C:\ Windows\SysWOW64
[PID]是任何正在运行的进程ID
输出是分开的.
前5行(包括空行)转到标准错误,最后2行转到标准输出.
所以我可以通过重定向来剥离标题:
> handle64 -p [PID] 2> nul
10:文件C:\ Windows
1C:文件C:\ Windows\SysWOW64
Winform应用程序
然后我尝试在C#winform应用程序中实现此命令:
Stream streamOut, streamErr;
var p = Process.Start(new ProcessStartInfo
{
FileName = "handle64.exe",
Arguments = "-p [PID]",
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
});
p.OutputDataReceived += (sender, e) =>
{
streamOut.Write("Output …Run Code Online (Sandbox Code Playgroud) 我的问题与此类似:Problems generated Solution for VS 2017 with CMake,但该解决方案对我不起作用。
当在VS 2017 的开发人员命令提示符中运行cmake时,我收到错误(来自):CMakeError.log
链接:致命错误 LNK1104:无法打开文件“ucrtd.lib”[E:\Projects\My Project\VS\CMakeFiles\3.14.4\CompilerIdC\CompilerIdC.vcxproj]
但该文件ucrtd.lib位于该Windows Kits文件夹中。
回显%LIB%
D:\Program Files (x86)\Microsoft Visual Studio 2017 Community\VC\Tools\MSVC\14.16.27023\lib\x86;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um \x86; C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x86 ;C:\Program Files(x86)\Windows Kits\10\lib\10.0.17763.0\um\x86;
目录“C:\ Program Files(x86)\ Windows Kits \ 10 \ lib \ 10.0.17763.0 \ ucrt \ x86 \” / w / b
libucrt.lib
libucrtd.lib
ucrt.lib
ucrtd.lib
而且我还尝试手动运行 中列出的构建命令CMakeError.log,它成功了,没有错误。
CL.exe /c /nologo /W0 /WX- /diagnostics:classic /Od …
ScrollableControl类有2个受保护的布尔属性:HScroll和VScroll.
正如文件所说:
获取或设置一个值,该值指示水平滚动条是否可见.
和
AutoScroll自动保持滚动条的可见性.因此,启用AutoScroll时,将HScroll或VScroll属性设置为true无效.
所以我像这样使用它们,但滚动条没有显示:
class MyScrollableControl : ScrollableControl {
public MyScrollableControl() {
this.AutoScroll = false;
this.HScroll = true;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下代码,它的工作原理:
this.HorizontalScroll.Visible = true;
Run Code Online (Sandbox Code Playgroud)
当我把它们放在一起时,滚动条仍然是不可见的,并且HScroll和HorizontalScroll.Visible的值保持为False.
this.AutoScroll = false;
this.HScroll = true;
this.HorizontalScroll.Visible = true;
Run Code Online (Sandbox Code Playgroud)
那么HScroll和VScroll的真正用途是什么?
更新
我的代码和测试
这是 Android 应用程序崩溃堆栈跟踪:
F 调试:#05 pc 001d0949 /data/app/com.test-2/oat/arm/base.odex(偏移量 0x12a000)
我知道对于“.so”库,我可以使用 addr2line 来获取函数名称。
那么如何处理odex文件呢?
我需要能够在循环内推进我的 for 循环控制索引变量
for i=1,5 do
io.write(("i: %d; "):format(i))
i = i + 2 -- this has no effect, as 'for' is in control of the index var.
end
Run Code Online (Sandbox Code Playgroud) 我试图用 bool TryParse(); 替换以下内容
result = table1.Columns.Contains("data1") ?
(table1.Rows[0]["data1"].ToString().ToLower().Equals("true") ? true : false) :
result;
Run Code Online (Sandbox Code Playgroud)
问题是,如果没有“data1”,它返回 false(实际上应该为 null),否则返回 true。如果没有 data1,我希望将“结果”分配为空。