Tag: C#的

为什么m – m 返回3,其中m是一个3x3matrix?

这是我的代码: int m[][3] = { { 0 , 1 , 2 }, { 10, 11, 12 }, { 20, 21, 22 } }; printf("%d %d\n", m[1] – m[0], m[1][0] – m[0][0]); 为什么呢 m[1] – m[0] 返回3 ? 我知道为什么第二个expression式会返回10但是第一个expression式对我来说似乎不合逻辑。

检查数据读取器中是否存在列

有没有一种方法来查看是否有一个字段存在于一个基于IDataReader的对象没有检查IndexOutOfRangeException? 实质上,我有一个方法需要一个基于IDataReader的对象,并创build一个强types的logging列表。 在一个例子中,一个数据读取器有一个其他字段没有的字段。 如果不需要的话,我不想重写所有提供此方法的查询,以包含此字段的某种forms。 到目前为止,我已经能够弄清楚如何做到的唯一方法是将1个唯一的字段放入try / catch块中,如下所示。 try { tmp.OptionalField = reader["optionalfield"].ToString(); } catch (IndexOutOfRangeException ex) { //do nothing } 有没有更简单的方法添加“可选字段”的其他查询或复制加载方法,所以1版本使用可选字段和其他不? 我也在2.0框架。

数组vsvectorvs列表

我正在维护一个固定长度的10个条目表。 每个项目是像4个领域的结构。 将会有数字位置指定的插入,更新和删除操作。 我想知道哪个是最好的数据结构来维护这个信息表: 数组 – 插入/删除由于移位需要线性时间; 更新需要一定的时间; 没有空间用于指针; 使用[]访问项目更快。 stl向量 – 插入/删除由于移位需要线性时间; 更新需要一定的时间; 没有空间用于指针; 访问一个项目比数组慢,因为它是对operator []和一个链表的调用。 stl list – 插入和删除需要线性时间,因为在应用插入/删除之前需要迭代到特定位置; 指针需要额外的空间; 访问一个项目比一个数组慢,因为它是一个链表的线性遍历。 现在,我的select是使用一个数组。 这是合理的吗? 还是我错过了什么? 哪一个更快:遍历一个列表,然后插入一个节点或将项目移动到一个数组中以产生一个空的位置,然后将该项目插入该位置? 衡量这种performance的最好方法是什么? 我可以在操作前后显示时间戳吗?

如何为ToString创build扩展方法?

我试过这个: public static class ListHelper { public static string ToString<T>(this IList<String> list) { return string.Join(", ", list.ToArray()); } public static string ToString<T>(this String[] array) { return string.Join(", ", array); } } 但是对于string[]和List<string>都不起作用。 也许我需要一些特殊的注释?

C ++模板和鸭子打字有什么关系?

对我来说,C ++模板使用了鸭子打字的想法,对吗? 是否意味着模板类或方法中引用的所有generics都是鸭子types?

C ++:我应该使用“typedef”还是“使用命名空间”?

我正在编写一个具有多个相关模块的库。 当我包含来自不同模块的文件时,是否应该使用以下命令来parsing名称空间: using namespace project1::namespace1; class1 obj; 要么 typedef project1::namespace1::class1 class1; class1 obj; 每种方法的优点/缺点是什么? 我读的地方,我们应该在.H文件中使用typedef和using .C文件,这是可取的? 我遇到的“typedef”的一个问题是,如果我在第三个模块中包含原始类和“typedef”类,就会导致命名空间模糊。

一个静态类如何从一个对象派生?

我想通过静态类inheritance非静态类。 public class foo { } public static class bar : foo { } 我得到: 静态类不能从types派生。 静态类必须从对象派生。 我如何从对象中派生出来? 代码是用C#编写的。

在.NET中重写Dispose(bool disposing)有什么意义?

如果我用C#编写一个实现IDisposable的类,为什么仅仅实现就不够用 public void Dispose(){ … } 处理任何非托pipe资源? 是 protected virtual void Dispose(bool disposing){ … } 总是必要的,有时是必要的,或者其他什么东西?

从string中删除所有非ASCII字符

我有一个C#例程,从CSV文件导入数据,将其与数据库匹配,然后将其重写为文件。 源文件似乎有一些非ASCII字符是污染处理例程。 我已经有一个静态方法,我运行每个input字段,但它执行基本检查,如删除逗号和引号。 有谁知道我可以添加删除非ASCII字符的function吗?

.c和.h文件扩展名对C来说意味着什么?

这是所有的标题; 我觉得非常简单,但是很难在任何地方search语法的东西。 这些是我从CS50.net复制的两个库文件,我想知道他们为什么有两个不同的扩展名。