小编Dan*_*ker的帖子

ulong和long之间的不可能比较突然可能

我知道为什么不允许这样做:

ulong x = 0xFEDCBA9876543210;
long y = Int64.MaxValue;
Console.WriteLine(x < y);
Run Code Online (Sandbox Code Playgroud)

显然,运行时无法将操作数隐式转换为其他类型或更大的类型以使比较起作用.

运算符'<'不能应用于'ulong'和'long'类型的操作数.

所以,这也是不允许的(带MinValue和const):

ulong x = 0xFEDCBA9876543210;
const long y = Int64.MinValue;
Console.WriteLine(x < y);
Run Code Online (Sandbox Code Playgroud)

然而,这是允许的(MaxValue相反):

ulong x = 0xFEDCBA9876543210;
const long y = Int64.MaxValue;
Console.WriteLine(x < y);
Run Code Online (Sandbox Code Playgroud)

<接受a ulong并没有过载long,但是我看到Reflector它会默默地转换Int64.MaxValue为a ulong.但这并不总是发生.它是如何工作的,以及这种不一致的原因是什么?

c# casting comparison-operators long-integer

6
推荐指数
1
解决办法
1143
查看次数

Array.IStructuralEquatable.GetHashCode中的错误?

在编写我自己的ByteArray内部使用字节数组的不可变类时,我实现了IStructuralEquatable接口.在我的实现中,我将计算哈希码的任务委托给内部数组.在测试它时,令我惊讶的是,我发现我的两个不同的数组具有相同的结构哈希码,即它们返回相同的值GetHashCode.重现:

IStructuralEquatable array11 = new int[] { 1, 1 };
IStructuralEquatable array12 = new int[] { 1, 2 };
IStructuralEquatable array22 = new int[] { 2, 2 };

var comparer = EqualityComparer<int>.Default;
Console.WriteLine(array11.GetHashCode(comparer));     // 32
Console.WriteLine(array12.GetHashCode(comparer));     // 32
Console.WriteLine(array22.GetHashCode(comparer));     // 64
Run Code Online (Sandbox Code Playgroud)

IStructuralEquatable是一个非常新的和未知的,但我在某处读到它可以用来比较集合和数组的内容.我错了,还是我的.Net错了?

请注意,我不是在谈论Object.GetHashCode!

编辑:所以,我显然是错的,因为不等对象可能有相同的哈希码.但是,不是要求GetHashCode一组有点随机分布的值作为要求吗?经过一些测试后,我发现任何两个具有相同第一个元素的数组都具有相同的哈希值.我仍然认为这是一种奇怪的行为.

c# gethashcode

6
推荐指数
2
解决办法
805
查看次数

如何显示(或写入文件)希腊字符?

如何使用C#显示(或写入文件)希腊字符?我需要使用C#在Excel中键入希腊字符epsilon.要写的字符串也有英文字符.例如:

在此输入图像描述

.net c# string

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

计算X位位掩码的最快方法?

我一直试图解决这个问题,但不能只用整数运算和按位运算符.但是,我认为它可能并且应该相当容易.我错过了什么?

问题是:得到一个任意长度的整数值(这与问题无关),其中X的最低有效位设置为1,其余的设置为0.例如,给定数字31,我需要得到一个整数值等于0x7FFFFFFF(31个最低有效位为1,其余为0).

当然,使用一个循环或者将移位的1换算为整数X次将完成这项工作.但这不是我正在寻找的解决方案.它应该更方向(X << Y - 1),因此不使用循环.

c# algorithm math integer bit-manipulation

5
推荐指数
1
解决办法
2733
查看次数

构建后缺少组装

我的C#解决方案中有5个项目.

  1. 共同
  2. 数据访问.
  3. UI
  4. 组件
  5. 测试

我可以添加对Components.dll的引用.但是,当我运行解决方案时,我得到了错误:

类型或命名空间名称"组件"不存在.

该Components.dll是在引用文件夹中已经存在.

你能帮帮我吗?

这是构建输出:

------ Rebuild All started: Project: Comps, Configuration: Release Any CPU ------
  Comps -> ..\Ashyaneh\Comps\bin\Release\AshyanehComps.dll
------ Rebuild All started: Project: Interfaces, Configuration: Debug Any CPU ------
  Interfaces -> ..\Ashyaneh\Interfaces\bin\Debug\AshyanehInterfaces.dll
------ Rebuild All started: Project: Common, Configuration: Debug Any CPU ------
  Common -> ..\Ashyaneh\Common\bin\Debug\AshyanehCommon.dll
------ Rebuild All started: Project: Web, Configuration: Debug Any CPU ------
  Web -> E:\My Programming 1391\HRShojaieWebAppRC2\Ashyaneh\Web\bin\Web.dll
------ Rebuild All started: Project: Test, Configuration: Debug x86 …
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
1
解决办法
9999
查看次数

从互联网获取图像时有趣的例外

我正在开发一个WPF程序,从网上获取图片并使用图像控件.我的图片列表有50张图片(来自vimeo的缩略图).一切看起来很好但是数字45.图片有一些问题,当我到达第45张图片时,我得到了这个例外:

价值不在预期范围内.

例外http://img232.imageshack.us/img232/2748/5688301315b2497090468bc.png

我用try-catch但是我抓不住它.因为它出现在Bitmap类中.以下是详细信息:

   at System.Windows.Media.ColorContext.GetColorContextsHelper(GetColorContextsDelegate getColorContexts)
   at System.Windows.Media.Imaging.BitmapFrameDecode.get_ColorContexts()
   at System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()
   at System.Windows.Media.Imaging.BitmapImage.OnDownloadCompleted(Object sender, EventArgs e)
   at System.Windows.Media.UniqueEventHelper.InvokeEvents(Object sender, EventArgs args)
   at System.Windows.Media.Imaging.LateBoundBitmapDecoder.DownloadCallback(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 …

c# wpf image argumentexception

5
推荐指数
1
解决办法
1244
查看次数

更改日期选择器文本:大写月份

我想通过上限包装月份的第一个字母来更改日期选择器.

目前我在线程中使用set culture info并在那里指定格式,但对于我的文化,月份总是全部小写:

CultureInfo ci = new CultureInfo("es-MX");
ci.DateTimeFormat.ShortDatePattern = "ddd dd/MMM/yyyy";
Thread.CurrentThread.CurrentCulture = ci;
Run Code Online (Sandbox Code Playgroud)

显示:

Dom 19/ago/2012

我希望:

Dom 19/Ago/2012

我怎么能改变呢?

c# datepicker

5
推荐指数
1
解决办法
858
查看次数

内联If语句 - 短路

根据我的理解和阅读,您可以在if语句(&&或||)中使用短路,以便第二个条件不会触发.如果你想要两个条件都可以使用单个操作数(&或|).

所以说如果我有内联if语句如下:

var test = (MyObject != null || string.IsNullOrEmpty(MyObject.Property)) ? string.Empty : MyObject.Property;
Run Code Online (Sandbox Code Playgroud)

object reference如果MyObject为null,这将抛出错误,我认为这不应该因为我使用短路.有人可以解释一下.

c# if-statement inline short-circuiting

5
推荐指数
1
解决办法
9595
查看次数

在LINQ中按即将到来的生日订购日期

我想在网格中显示即将到来的生日.我有随机顺序的值列表,我想使用LINQ 从今天的日期(假设当前日期是3月1日)获得订单.

List<DateTime> dtlist = new List<DateTime>();
Run Code Online (Sandbox Code Playgroud)
List 1 value = "25-July-1985"
List 2 value = "31-Dec-1956"       
List 3 value = "21-Feb-1978"
List 4 value = "18-Mar-2005"

输出顺序应为:

18-Mar
25-July
31-Dec
21-Feb

注意:我没有在这里使用任何数据库来获取值.

c# linq

5
推荐指数
1
解决办法
2342
查看次数

多个堆栈和堆放在虚拟内存中的哪个位置?

我正在写一个内核和需求(并希望)把多个栈和堆到虚拟内存,但我无法弄清楚如何有效地把它们.普通程序如何做到这一点?

堆栈和堆是如何(或在哪里)放入32位系统提供的有限虚拟内存中,以便它们具有尽可能多的增长空间?

例如,当一个简单的程序加载到内存中时,其地址空间的布局可能如下所示:

[  Code  Data  BSS  Heap->  ...  <-Stack  ]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,堆能够增长大如虚拟内存允许(如到堆栈),我相信这是堆是如何工作的大多数程序.没有预定义的上限.

许多程序都将共享库放在虚拟地址空间中的某个位置.然后有多线程程序,有多个堆栈,每个线程一个..NET程序有多个堆,所有这些都必须能够以这种或那种方式增长.

我只是没有看到如何在没有对所有堆和堆栈的大小预先设定的限制的情况下合理有效地完成这项工作.

heap stack operating-system virtual-memory

5
推荐指数
1
解决办法
584
查看次数