小编shi*_*ngo的帖子

为什么多维数组中的枚举值不等于它自己?

考虑:

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还复制.)

c# enumeration multidimensional-array

151
推荐指数
2
解决办法
2923
查看次数

C#中的双感叹号是什么?

来自https://source.dot.net/#System.Private.CoreLib/Hashtable.cs,475

public virtual bool ContainsKey(object key!!)
Run Code Online (Sandbox Code Playgroud)

它看起来像两个 null-forgiving 运算符。有相关文件吗?

c# syntax function method-signature c#-11.0

82
推荐指数
2
解决办法
9610
查看次数

在C#中运行程序时,所有消息都转到标准输出,但标准错误不包含任何内容

我的问题与确定的问题不同.显然我已经调用了"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)

c# stdout process command-line-interface stderr

13
推荐指数
1
解决办法
427
查看次数

CMake 无法打开“ucrtd.lib”

我的问题与此类似: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 …

cmake visual-studio

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

在ScrollableControl中使用HScroll/VScroll有什么用?

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和Horizo​​ntalScroll.Visible的值保持为False.

this.AutoScroll = false;
this.HScroll = true;
this.HorizontalScroll.Visible = true;
Run Code Online (Sandbox Code Playgroud)

那么HScroll和VScroll的真正用途是什么?


更新

我的代码和测试

在此输入图像描述

c# winforms scrollable

9
推荐指数
1
解决办法
572
查看次数

如何从base.odex获取函数名称以及地址和偏移量

这是 Android 应用程序崩溃堆栈跟踪:

F 调试:#05 pc 001d0949 /data/app/com.test-2/oat/arm/base.odex(偏移量 0x12a000)

我知道对于“.so”库,我可以使用 addr2line 来获取函数名称。

那么如何处理odex文件呢?

android addr2line

5
推荐指数
0
解决办法
648
查看次数

Lua for循环控制变量

我需要能够在循环内推进我的 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)

lua

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

在 C# 中用 Bool TryParse() 替换条件

我试图用 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,我希望将“结果”分配为空。

c# winforms

0
推荐指数
1
解决办法
209
查看次数