小编sta*_*ica的帖子

BETWEEN运算符与> = AND <=:是否存在性能差异?

这两个陈述在逻辑上是等价的:

SELECT * FROM table WHERE someColumn BETWEEN 1 AND 100

SELECT * FROM table WHERE someColumn >= 1 AND someColumn <= 100
Run Code Online (Sandbox Code Playgroud)

一个与另一个有潜在的性能优势吗?

sql-server performance between

12
推荐指数
1
解决办法
9997
查看次数

VS IntelliSense - IFluentInterface/IHideObjectMembers技巧不起作用.为什么?

IHideObjectMembers特技(又名IFluentInterface)可用于例如,在连贯接口实现隐藏System.Object从智能感知构件.(如果你不知道这个技巧,你可以通过上面的链接阅读它;我只是在这里重复界面的通常声明:)

using System;
using System.ComponentModel;

[EditorBrowsable(EditorBrowsableState.Never)]
public interface IHideObjectMembers
{
    [EditorBrowsable(EditorBrowsableState.Never)] bool Equals(object obj);
    [EditorBrowsable(EditorBrowsableState.Never)] int GetHashCode();
    [EditorBrowsable(EditorBrowsableState.Never)] Type GetType();
    [EditorBrowsable(EditorBrowsableState.Never)] string ToString();
}
Run Code Online (Sandbox Code Playgroud)

我现在应该能够隐藏System.Object其他类型的成员,如下所示:

public class SomeClass : IHideObjectMembers { ... }
Run Code Online (Sandbox Code Playgroud)

要么:

public interface ISomeInterface : IHideObjectMembers { ... }
Run Code Online (Sandbox Code Playgroud)

我在VS 2008 Express和VS 2008 Standard中都试过这个.但是,根本没有成员隐藏IntelliSense.我已经EditorBrowsableAttribute在不同的项目中使用它,它总是运作良好; 但是,它在这种特定情况下不起作用.

http://i48.tinypic.com/vhb4fq.jpg

如果事情按预期发挥作用,我只会看到这种SomeMethodTwo方法.

我错过了什么吗?


PS:您可以从声明和屏幕截图中推断出我的示例代码.我有一个SomeClass叫做单个虚拟方法的类SomeMethodTwo.非常简单.我没有System.Object在这个类中重新实现这四个方法,因为这不是必需的.

intellisense filter visual-studio-2008 class-members

12
推荐指数
2
解决办法
1695
查看次数

Dispatcher和SynchronizationContext类

有人可以告诉我何时使用a Dispatcher以及何时使用该SynchronizationContext课程?

有一段时间我一直在使用Dispatcher从后台线程排队任务,然后我发现了SynchronizationContext.

wpf dispatcher synchronizationcontext

12
推荐指数
1
解决办法
7056
查看次数

如何将"default(SomeType)"从C#翻译成CIL?

我目前正在处理涉及System.Reflection.Emit代码生成的问题.我想弄清楚default(SomeType)在C#中使用的地方发出什么CIL .

我从Visual Studio 11 Beta运行了一些基本实验.JustDecompile显示我以下CIL输出default(bool),default(string)以及default(int?:

.locals init (
    [0] bool                                         V_0,
    [1] string                                       V_1,
    [2] valuetype [mscorlib]System.Nullable`1<int32> V_2    
)

// bool b = default(bool);
ldc.i4.0
stloc.0

// string s = default(string);
ldnull
stloc.1

// int? ni = default(int?);
ldloca.s V_2
initobj valuetype [mscorlib]System.Nullable`1<int32>
Run Code Online (Sandbox Code Playgroud)

从这一点来看,default(T)似乎由编译器解决了给定类型的最合适的CIL.


我继续看看在更一般的情况下会发生什么,使用三种通用方法:

T CreateStructDefault<T>() where T : struct { return default(T); }
T CreateClassDefault<T>()  where T : class  { return default(T); } …
Run Code Online (Sandbox Code Playgroud)

c# cil default

12
推荐指数
1
解决办法
1233
查看次数

让一个线程等待n个脉冲

我怎么能等待n个脉冲?

… // do something
waiter.WaitForNotifications();
Run Code Online (Sandbox Code Playgroud)

我希望上面的线程等到被通知n次(由n个不同的线程或n次由同一个线程).

我相信有一种计数器可以做到这一点,但我找不到它.

c# multithreading

12
推荐指数
2
解决办法
336
查看次数

对象初始化程序内的属性可以相互引用吗?

动态对象创建一个匿名类型的对象(即在对象初始化器内)时,属性是否可能以某种方式相互引用?我在下面的简化示例需要重用该Age属性,而不需要进行第二次大量调用GetAgeFromSomewhere().当然它不起作用.有关如何实现这一目标的任何建议?

var profile = new {
  Age = GetAgeFromSomewhere(id),
  IsLegal = (Age>18)
};
Run Code Online (Sandbox Code Playgroud)

对于动态对象匿名类型的对象初始化器,这样的事情是可能的还是不可能的

c# properties object-initializers

12
推荐指数
2
解决办法
5621
查看次数

符合条件的C#编译器是否可以优化本地(但未使用)变量(如果它是对象的唯一强引用)?

另见这些相关资源:


换一种说法:

可以在变量超出范围之前回收局部变量引用的对象(例如,因为变量已分配,但之后不再使用),或者该变量在变量退出之前保证不符合垃圾收集条件.范围?

让我解释:


void Case_1()
{
    var weakRef = new WeakReference(new object());

    GC.Collect();  // <-- doesn't have to be an explicit call; just assume that
                   //     garbage collection would occur at this point.

    if (weakRef.IsAlive) ...
}
Run Code Online (Sandbox Code Playgroud)

在这个代码示例中,我显然必须计划object垃圾收集器回收new'ed的可能性; 因此if声明.

(请注意,我使用weakRef的唯一目的是检查新人object是否还在.)


void Case_2()
{
    var unusedLocalVar = new object();
    var weakRef = new WeakReference(unusedLocalVar);

    GC.Collect();  // <-- doesn't have to be an explicit call; just assume that …
Run Code Online (Sandbox Code Playgroud)

.net c# garbage-collection weak-references compiler-optimization

11
推荐指数
1
解决办法
1872
查看次数

机器epsilon的使用是否适合浮点相等测试?

这是测试浮点值相等性的后续行动:"精度"常量是否有标准名称?.对于平等,
有一个非常相似的问题Double.Epsilon,大于,小于,小于或等于,大于或等于.


众所周知,对两个浮点值xy的相等测试应该看起来更像这样(而不是简单的=):

abs(x - y)< epsilon   ,其中epsilon是一个非常小的值.

如何为epsilon选择一个值?

显然最好选择epsilon尽可能小的值,以获得相等性检查的最高精度.

例如,.NET框架提供一个常量System.Double.Epsilon(= 4.94066×10 -324),表示System.Double大于零的最小正值.

但是,事实证明这个特定值不能可靠地用作epsilon,因为:

0 + System.Double.Epsilon≠0

1 + System.Double.Epsilon= 1(!)

也就是说,如果我理解正确,因为该常数小于机器epsilon.

→这是对的吗?

→这是否也意味着我可以可靠地使用epsilon:= machine epsilon进行相等测试?

删除了这两个问题,因为它们已经与上面提到的第二个SO问题得到了充分的回答.


链接到维基百科的文章说,对于64位浮点数(即double许多语言中的类型),机器epsilon等于:

2 -53,或约.0.000000000000000111(小数点后15个零的数字)

→是否遵循这一点,所有64位浮点值保证精确到14(如果不是15)数字?

language-agnostic floating-point precision epsilon

11
推荐指数
3
解决办法
3244
查看次数

SQL Server 2012版本的Microsoft.SqlServer.Types几何UDT是否与SQL Server 2008向后兼容?

如果我在本地安装了SQL Server 2008和SQL Server 2012,我只想亲自尝试一下; 但是我只安装了新版本,并希望保持这种方式.

  • SQL Server 2008附带一个程序集Microsoft.SqlServer.Types.dll,主要版本10.
  • SQL Server 2012附带了一个程序集Microsoft.SqlServer.Types.dll,主要版本为11.

除其他外,两个程序集都暴露了一种SqlGeometryBuilder类型.两个程序集版本之间的一个显着区别是2012类型有一个额外的重载方法AddCircularArc,而2008类型没有.

因为并行引用这两个程序集并不是一件容易的事(也许是一个坏主意),我想知道我是否可以使用2012版本 - 即使是针对SQL Server 2008实例,只要我不使用它AddCircularArc.

任何人都可以分享他们的经验吗?

spatial backwards-compatibility sql-server-2008 sql-server-2012 sqlgeometry

11
推荐指数
2
解决办法
8696
查看次数

Visual Studio 2010的VB.NET代码编辑器中的方法下拉列表是否有键盘快捷键?

在Visual Studio中,VB代码编辑器窗口中有一个方法下拉列表.这在下面的屏幕截图中突出显示.

我想知道是否有一个默认的键盘快捷键来访问此列表,或者是否可以手动设置这样的键盘绑定(如果是,如何)?

下面的下拉列表位于VB.NET代码编辑器窗口的右上角

vb.net keyboard-shortcuts visual-studio-2010 visual-studio

11
推荐指数
1
解决办法
1638
查看次数