Tag: c# 3.0

优化的JSON序列化器/解串器作为扩展方法?

我想尽可能容易地将任何对象序列化为JSON,然后简单地将其转换回type = safe对象。 任何人都可以告诉我在“FromJSONString”扩展方法中我做错了什么? 编辑 为方便起见,下面是一个完整的function扩展方法。 如果你看到错误,请告诉我。 public static string ToJSONString(this object obj) { using (var stream = new MemoryStream()) { var ser = new DataContractJsonSerializer(obj.GetType()); ser.WriteObject(stream, obj); return Encoding.UTF8.GetString(stream.ToArray()); } } public static T FromJSONString(this string obj) { using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(obj))) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); T ret = (T)ser.ReadObject(stream); […]

byte 并通过引用有效传递

因此,这与处理大对象堆并尝试最小化实例化byte []的次数有关。 基本上,我有OutOfMemoryExceptions,我觉得这是因为我们实例化了太多的字节数组。 当我们处理几个文件时,程序工作正常,但它需要扩展,目前它不能。 简而言之,我有一个从数据库中提取文档的循环。 目前,它一次拉一个文档然后处理文档。 文件的范围可以从小于1兆欧卡到400欧元不等。 (因此我为什么一次处理一个)。 以下是伪代码,在我进行优化之前。 所以我正在做的步骤是: 调用数据库以查找最大文件大小(然后将其乘以1.1) var maxDataSize = new BiztalkBinariesData().GetMaxFileSize(); maxDataSize = (maxDataSize != null && maxDataSize > 0) ? (long)(maxDataSize * 1.1) : 0; var FileToProcess = new byte[maxDataSize]; 然后我进行另一个数据库调用,从数据库中提取所有文档(没有数据)并将它们放入IEnumerable中。 UnprocessedDocuments = claimDocumentData.Select(StatusCodes.CurrentStatus.WaitingToBeProcessed); foreach (var currentDocument in UnprocessDocuments) { // all of the following code goes here } […]

以编程方式使新行变脏并在DataGridView中插入新行

我有一个可编辑的无界数据网格视图。 我正在以编程方式更改新行的值。 通常,当用户键入新行的任何字段时,它会变脏并在其下方插入另一个新行。 但在我的情况下,当用户进入新行的任何字段时,我正在捕获function键并以编程方式更改单元格值。 myGrid.CurrentCell.Value =“xyz”; 并且它不会在它下面插入新行。 现在作为一个解决方法我在CellValueChanged事件处理程序上尝试了这个。 if (myGrid.NewRowIndex == e.RowIndex) { myGrid.Rows.Insert(e.RowIndex + 1, 1); } 但它会抛出错误,说明No row can be inserted after the uncommitted new row. 。 我怎么能告诉myGrid我的当前行(这是一个新行)是脏的,之后需要一个新行?

为什么在集合初始值设定项结束时可以使用逗号?

这一直困扰着我,但我猜这里有一个非常明智的解释。 当你有一个集合初始化程序时,编译器允许使用尾随逗号,例如 new Dictionary { { “Foo”, “Bar “}, }; 和 new List { “Foo”, }; 任何人都知道为什么编译器允许这个尾随逗号?

什么时候应该在C#中使用as关键字

当你想在大多数时候想要改变类型时,你只想使用传统的演员表。 var value = (string)dictionary[key]; 这很好,因为: 它很快 如果出现问题,它会抱怨(而不是给对象是空的例外) 那么什么是使用的好例子, as我无法真正找到或想到完全适合它的东西? 注意:实际上我认为有时候编译器会阻止使用演员as作品(generics相关?)。

uniqueidentifier C#中的等效数据类型

什么是uniqueidentifier(Sql server 2005)在C#3.5数据类型中的等价物?

为什么我不能在初始化器中初始化只读变量?

为什么我不能在初始化器中初始化只读变量? 以下内容不起作用: class Foo { public readonly int bar; } new Foo { bar=0; }; // does not work 这是由于CLR的某些技术限制吗? 编辑 我知道new Foo { bar=0; } new Foo { bar=0; }与new Foo().bar=0;相同new Foo().bar=0; ,但是CLR强制执行“readonly”,还是只是编译器限制?

C#如何提取完整的xml节点集

Everyday Italian Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T. Ray 2003 39.95 他们以任何方式使用XPath来选择完整的第一个节点集,例如来自 to , 这样,可以存储那个xml块供以后使用。 鲍勃。

C#中的滑动窗口算法

我试图在C#3.0中的二维数组上实现简单的滑动窗口算法,我发现它非常有用,但它只涉及单维数组。 该post还包括算法的代码,我完全没有将它用于我的senario …任何人都可以建议我如何进行? 场景: http://sofzh.miximages.com/c%23/matrix.jpg http://sofzh.miximages.com/c%23/matrix.jpg 上面的图像是10X10矩阵,需要使用任何算法得到3X3矩阵(滑动窗口会很大)。 红色矩形是第一组,绿色是第二组。 它一直持续到所有行的结尾 PS:我用Google搜索算法,但没有运气:(

C#扩展方法优先级

我对扩展方法的工作原理有点困惑。 如果我正确地阅读这个http://msdn.microsoft.com/en-us/library/bb383977.aspx并且这个如果扩展方法与密封类中的方法具有相同的签名,那么调用优先级是什么? 。 然后以下应该写出“实例”,而是写出“扩展方法”。 interface IFoo { } class Foo : IFoo { public void Say() { Console.WriteLine(“Instance”); } } static class FooExts { public static void Say(this IFoo foo) { Console.WriteLine(“Extension method”); } } class Program { static void Main(string[] args) { IFoo foo = new Foo(); foo.Say(); } } 澄清澄清行为的任何帮助。