Tag: .net

我可以将二进制文件放入stdin吗? C#

与此问题相关的问题用7z加密二进制文件没有文件名? 在C#中我如何将二进制文件放入STDin? 我希望下面的内容可以正常运行,但它不会。 这是有道理的。 那么我如何推送一个byte []数组呢? new BinaryWriter(p.StandardInput.FormatProvider);

托管代码中是否可能存在内存泄漏? (特别是C#3.0)

例如,如果我有一个分层数据结构: class Node { public List children; } 然后在其中一个父母中填充到很多级别: myNode.children.Clear(); 这将清除所有对直系孩子的提及 – 但那些直系孩子所引用的所有大孩子,大孙子等等呢? C#聪明到知道它们不再需要它们会被垃圾收集吗? 我已阅读使用WPF数据绑定而没有实现接口INotifyChanged可能导致内存泄漏: http : //blogs.msdn.com/b/micmcd/archive/2008/03/07/avoiding-a-wpf-memory-leak-with-数据绑定-black-magic.aspx ,在托管环境中这怎么可能?

为什么我不能在.NET asmx Web服务中公开接口?

我有一个.NET Web服务(使用asmx …还没有升级到WCF)暴露了以下内容: public class WidgetVersion1 : IWidget {} public class WidgetVersion2 : IWidget {} 当我尝试绑定到Web服务时,出现以下序列化错误: 无法序列化IWidget类型的成员WidgetVersion1,因为它是一个接口。 我已经尝试将各种属性添加到IWidget接口( XmlIgnore , SoapIgnore , NonSerialized ),但它们在接口上无效。 有谁知道为什么我无法公开界面? 我假设WSDL不支持接口,但是.NET不能通过简单地不对接口进行序列化来解决这个问题吗? 除了从WidgetVersion1和WidgetVersion2类定义中删除IWidget接口之外,还有什么方法吗?

将double值乘以100.0会引入舍入误差?

这就是我正在做的事情,99.999%的时间工作: ((int)(customerBatch.Amount * 100.0)).ToString() 金额值是双倍的。 我试图将价值以便士的价格写入文本文件,以便传输到服务器进行处理。 金额绝不会超过2位精度。 如果您使用580.55作为金额,则此行代码返回58054作为字符串值。 此代码在64位Web服务器上运行。 有任何想法吗?

代码契约:我们是否必须在委托方法中冗余地指定Contract.Requires(…)语句?

我打算使用新的.NET 4 Code Contractsfunction进行未来的开发。 这让我想知道是否必须在一系列方法中冗余地指定等效的Contract.Requires(…)语句。 我认为一个代码示例胜过千言万语: public bool CrushGodzilla(string weapon, int velocity) { Contract.Requires(weapon != null); // long code return false; } public bool CrushGodzilla(string weapon) { Contract.Requires(weapon != null); // specify contract requirement here // as well??? return this.CrushGodzilla(weapon, int.MaxValue); } 对于运行时检查它并不重要,因为我们最终总是会遇到需求检查,如果失败我们会收到错误。 但是,当我们再次在第二次超载中没有指定合同要求时,这被认为是不好的做法吗? 此外,还将具有编译时检查的function ,并且还可能设计代码合同的时间检查 。 在Visual Studio 2010中,它似乎尚不适用于C#,但我认为有一些类似Spec#的语言已经可以使用。 当我们编写代码来调用这样的方法并且我们的参数当前可以或将为null时,这些引擎可能会给我们提示。 所以我想知道这些引擎是否总是会分析一个调用堆栈,直到找到一个目前不满意的合同方法? 此外, 在这里我了解了Contract.Requires(…)和Contract.Assume(…)之间的区别 。 […]

什么是强命名,我如何强名二进制?

在我发布之前,我听说过某些地方需要强烈命名我的二进制文件。 这是什么想法?

为什么受“Enum”限制的generics类型无法在C#7.3中被认定为“结构”?

如果我有一个带有struct约束的generics接口,如下所示: public interface IStruct where T : struct { } 我可以提供枚举作为我的类型T ,因为enum满足struct约束: public class EnumIsAStruct : IStruct { } C#7.3添加了一个Enum约束 。 以下代码以前是非法的,现在编译: public class MCVE : IStruct where T : struct, Enum { } 但令我惊讶的是,以下内容无法编译: public class MCVE : IStruct where T : Enum { } ……有错误 CS0453类型’T’必须是非可空值类型才能在generics类型或方法’IStruct’中将其用作参数’T’ 为什么是这样? 我希望由Enum约束的generics类型可用作类型参数,其中类型受struct约束但似乎不是这种情况 – 我必须将我的Enum约束更改为struct, Enum 。 我的期望是错的吗?

计算端点给定距离,方位,起点

我试图找到目的地点,给定起点纬度/长度,方位和距离。 下面这个网站的计算器给了我想要的结果。 http://www.movable-type.co.uk/scripts/latlong.html 当我尝试通过代码实现相同的操作时,我得不到正确的结果。 以下是我的代码 – private GLatLng pointRadialDistance(double lat1, double lon1, double radianBearing, double radialDistance) { double rEarth = 6371.01; lat1 = DegreeToRadian(lat1); lon1 = DegreeToRadian(lon1); radianBearing = DegreeToRadian(radianBearing); radialDistance = radialDistance / rEarth; double lat = Math.Asin(Math.Sin(lat1) * Math.Cos(radialDistance) + Math.Cos(lat1) * Math.Sin(radialDistance) * Math.Cos(radianBearing)); double lon; if (Math.Cos(lat) == 0) { // […]

从控制台应用程序重新打开WPF窗口

我想从Console应用程序打开一个WPF窗口。 在提到这篇文章后 ,它运作正常。 问题是:当用户关闭WPF窗口(手动)时,不能再从控制台重新打开它,抛出exception消息:“无法在同一AppDomain中创建多个System.Windows.Application实例。” 这是代码: class Program { static void Main(string[] args) { string input=null; while ((input = Console.ReadLine()) == “y”) { //Works fine at the first iteration, //But failed at the second iteration. StartWpfThread(); } } private static void OpenWindow() { //Exception(Cannot create more than one System.Windows.Application instance in the same AppDomain.) //is thrown […]

ODP.NET托管 – 无法找到请求的.Net Framework数据提供程序

使用Visual Studio 2013,我使用Nuget将最新版本的ODP.NET Managed添加到项目中: Install-Package odp.net.managed http://www.nuget.org/packages/odp.net.managed/121.1.2 现在,当我尝试运行以下代码时: Database db = DatabaseFactory.CreateDatabase(); 它抛出以下exception: An exception of type ‘System.ArgumentException’ occurred in System.Data.dll but was not handled in user code Additional information: Unable to find the requested .Net Framework Data Provider. It may not be installed. 在阅读其他用户的类似问题后,我将托管驱动程序部分添加到C:\ Windows \ Microsoft.Net \ Framework64 \ v4.0.30319 \ Config \ […]