小编Han*_*ant的帖子

如何在Visual Studio中禁用所有大写菜单标题

我认为标题是自我解释的.只想更改Visual Studio 2012的外观,不要以全部大写字母显示菜单标题.

visual-studio-2012 visual-studio-2013

580
推荐指数
9
解决办法
6万
查看次数

为什么Math.Round(2.5)返回2而不是3?

在C#中,结果Math.Round(2.5)为2.

应该是3,不是吗?为什么它是2而不是C#?

.net rounding

388
推荐指数
7
解决办法
25万
查看次数

使用反射设置对象属性

在C#3.5中是否有一种方法可以使用反射来设置对象属性?

例如:

MyObject obj = new MyObject();
obj.Name = "Value";
Run Code Online (Sandbox Code Playgroud)

我想obj.Name用反思来设定.就像是:

Reflection.SetProperty(obj, "Name") = "Value";
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

.net c# reflection properties

308
推荐指数
8
解决办法
24万
查看次数

为什么WinRT不受管理?

Windows 8引入了WinRT,它类似于.NET但不受管理.为什么不受管理?这是性能问题吗?这是否意味着垃圾收集不适合低级API?

.net c# windows-8 windows-runtime

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

为什么Attributes.IsDefined()缺少重载?

受到SO问题的启发.Attribute类对IsDefined()方法有几个重载.涵盖的是应用于Assembly,Module,MemberInfo,ParameterInfo的属性.MemberInfo重载包括PropertyInfo,FieldInfo,EventInfo,MethodInfo,ConstructorInfo.

这需要处理大多数AttributeTargets.除了一个biggy:Attribute.IsDefined(Type,Type)没有重载,因此您可以检查是否在类上定义了属性.或者结构,委托或枚举.

并非这是一个真正的问题,Type.GetCustomAttributes()可以解决这个问题.但是所有的BlahInfo类型都有这个.我不知道缺乏对称性.我无法理解为什么这对Type来说会有问题.猜测遗传问题并没有向我解释.在混合中使用ValueType可能是一个领先者,但仍然没有意义.我不买"他们忘了",他们从不这样做.

为什么这个过载丢失了?

.net c# reflection

163
推荐指数
1
解决办法
8024
查看次数

为什么Environment.Exit()不再终止程序?

这是我发现的短短数天前,我得到了确认,这并不仅仅局限于我的机器从这个问题.

重新编写它的最简单方法是启动Windows窗体应用程序,添加一个按钮并编写以下代码:

    private void button1_Click(object sender, EventArgs e) {
        MessageBox.Show("yada");
        Environment.Exit(1);         // Kaboom!
    }
Run Code Online (Sandbox Code Playgroud)

执行Exit()语句程序失败.在Windows窗体上,您会收到"创建窗口句柄时出错".

启用非托管调试可以清楚地了解发生了什么.在COM模式循环正在执行,并允许待递送WM_PAINT消息.处置表格上的这是致命的.

到目前为止我收集的唯一事实是:

  • 它不仅限于运行调试器.没有一个也失败了.相当糟糕的是,WER崩溃对话框出现了两次.
  • 它与过程的位数没有任何关系.wow64层非常臭名昭着,但AnyCPU构建崩溃的方式相同.
  • 它与.NET版本没有任何关系,4.5和3.5以同样的方式崩溃.
  • 退出代码无关紧要.
  • 在调用Exit()之前调用Thread.Sleep()不会修复它.
  • 这种情况发生在64位版本的Windows 8上,而Windows 7似乎没有受到同样的影响.
  • 这应该是比较新的行为,我之前没有见过这个.我看不到通过Windows Update提供的相关更新,尽管我的计算机上的更新历史记录不再准确.
  • 这是严重破坏的行为.您可以在AppDomain.UnhandledException的事件处理程序中编写这样的代码,并以相同的方式崩溃.

我特别感兴趣的是你可能做些什么来避免这次崩溃.特别是AppDomain.UnhandledException场景让我感到困惑; 没有很多方法可以终止.NET程序.请注意,调用Application.Exit()或Form.Close()在UnhandledException的事件处理程序中无效,因此它们不是变通方法.


更新:Mehrdad指出终结器线程可能是问题的一部分.我想我已经看到了这一点,并且我也看到了CLR给终结器线程完成执行的2秒超时的一些证据.

终结器位于NativeWindow.ForceExitMessageLoop()内.那里有一个IsWindow()Win32函数,大致对应于代码位置,在32位模式下查看机器代码时偏移量为0x3c.似乎IsWindow()正在陷入僵局.我无法获得内部的良好堆栈跟踪,但调试器认为P/Invoke调用刚刚返回.这很难解释.如果你能获得更好的堆栈跟踪,那么我很乐意看到它.矿:

System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.ForceExitMessageLoop() + 0x3c bytes
System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.Finalize() + 0x16 bytes
[Native to Managed Transition]
kernel32.dll!@BaseThreadInitThunk@12()  + 0xe bytes
ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes
Run Code Online (Sandbox Code Playgroud)

ForceExitMessageLoop调用之上没有任何内容,启用了非托管调试器.

.net c# windows

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

How do I get Bin Path?

I need to the the bin path of the executing assembly. How do you get it? I have a folder Plugins in the Bin/Debug and I need to get the location

.net c#

69
推荐指数
5
解决办法
9万
查看次数

在Visual Studio 2013中用什么键盘快捷键来组织C#使用?

有没有办法通过Visual Studio中的一个或多个文件的快捷方式组织C#使用(删除和排序,单独或一起)?

我知道这可以通过选择一个文件的菜单来完成

Edit > IntelliSense > Organize Usings > Remove and Sort

但我想更快地做到这一点.我正在使用Visual Studio 2013 Express进行C#开发(想知道如何在旧版和其他版本中完成此操作).先感谢您.

c# refactoring visual-studio visual-studio-2013

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

防止在C#中覆盖单个方法

我知道我可以使用密封以防止其他类继承某个类,但是是否可以允许继承但是可以防止覆盖某些虚拟方法?

c# inheritance overriding

37
推荐指数
5
解决办法
3万
查看次数

PowerShell 和 C# 中的 BigInt 不一致

根据微软文档[BigInt]数据类型似乎没有定义的最大值,理论上可以容纳无限大的数字,但我发现在第 28 位之后,一些奇怪的事情开始发生:

PS C:\Users\Neko> [BigInt]9999999999999999999999999999
9999999999999999999999999999
PS C:\Users\Neko> [BigInt]99999999999999999999999999999
99999999999999991433150857216
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在第一个命令1 上BigInt按预期工作,但是还有一个数字,它转换99999999999999999999999999999为的地方似乎发生了一些衰减,99999999999999991433150857216但是,提示不会引发任何错误,您可以继续添加更多数字,直到第 310 个数字

PS C:\Users\Neko> [BigInt]99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
100000000000000001097906362944045541740492309677311846336810682903157585404911491537163328978494688899061249669721172515611590283743140088328307009198146046031271664502933027185697489699588559043338384466165001178426897626212945177628091195786707458122783970171784415105291802893207873272974885715430223118336
PS C:\Users\Neko\> [BigInt]999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
Run Code Online (Sandbox Code Playgroud)

这将抛出错误

At line:1 char:318
+ ... 999999999999999999999999999999999999999999999999999999999999999999999
+                                                                          ~
The numeric constant 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 is not valid.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : BadNumericConstant
Run Code Online (Sandbox Code Playgroud)

我认为这是一个控制台问题而不是一个BigInt问题,因为错误没有提到[BigInt]数据类型,不像其他数据类型的数字太大

PS C:\Users\Neko> [UInt64]18446744073709551615
18446744073709551615
PS C:\Users\Neko> [UInt64]18446744073709551616
Cannot convert value "18446744073709551616" to …
Run Code Online (Sandbox Code Playgroud)

c# powershell bigint .net-core

36
推荐指数
3
解决办法
1426
查看次数