Tag: C#的

printf()和puts()在C中有什么区别?

我知道你可以使用printf()和puts()来打印。 我也可以看到printf()允许你插入variables并进行格式化。 puts()仅仅是printf()一个原始版本。 它应该用于每一个可能的printf()没有string插值?

在MVVM应ViewModel或模型实现INotifyPropertyChanged?

我已经通过的大多数MVVM示例都使模型实现了INotifyPropertyChanged,但是在Josh Smith的CommandSink示例中 ,ViewModel实现了INotifyPropertyChanged 。 我仍然认知地把MVVM概念放在一起,所以我不知道是否: 您必须将INotifyPropertyChanged放在ViewModel中才能使CommandSink工作 这只是一个规范的畸变,并不重要 你应该总是让模型实现INotifyPropertyChanged,这只是一个错误,如果这是从代码示例开发到应用程序将被纠正 MVVM项目上的其他人的经验是什么?

“int main(vooid)”? 这是如何运作的?

我最近不得不input一个小的Ctesting程序,在这个过程中,我在主函数中犯了一个拼写错误,意外地使用了vooid而不是void 。 但它仍然工作。 把它缩小到最小的完整版本,我结束了: int main (vooid) { return 42; } 这确实编译( gcc -Wall -o myprog myprog.c ),并在运行时返回42。 这个有效的代码究竟是多less? 这是从我的bash shell中剪切和粘贴的成绩单,以显示我在做什么: pax$ cat qq.c int main (vooid) { return 42; } pax$ rm qq ; gcc -Wall -o qq qq.c ; ./qq pax$ echo $? 42

在发布模式下,代码行为不像预期的那样

以下代码在debugging模式和发行模式(使用Visual Studio 2008)下生成不同的结果: int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } printf("i:%2d, result = %3d\n", i, result) ; } return 0; } debugging模式的输出如预期的那样: i: 0, result = 0 i: 1, […]

创build我自己的迭代器

我试图学习C ++,所以原谅我,如果这个问题表明缺乏基本的知识,你看,事实是,我缺乏基本的知识。 我想了解如何为我创build的类创build迭代器。 我有一个“Shape”类,里面有一个Points的容器。 我有一个“Piece”类,它引用了一个Shape并为Shape定义了一个位置。 Piece没有一个Shape,只是引用一个Shape。 我希望它看起来像Piece是一个点的容器,它与它所引用的形状相同,但增加了Piece位置的偏移量。 我希望能够遍历Piece的点,就像Piece本身就是一个容器一样。 我已经做了一些阅读,没有find任何帮助我的东西。 我会非常感谢任何指针。

什么是ReSharper的一些替代品?

我正在考虑购买ReSharper许可证,但ReSharper有没有其他可能的替代scheme,您如何评价这些与ReSharper相比? 它不一定是一个免费的select,但我只想知道有多好的同等产品。

for循环中声明的variables是局部variables?

我一直在使用C#很长一段时间,但从来没有意识到以下几点: public static void Main() { for (int i = 0; i < 5; i++) { } int i = 4; //cannot declare as 'i' is declared in child scope int A = i; //cannot assign as 'i' does not exist in this context } 那么为什么我不能在for块之外使用'i'的值,如果它不允许我用这个名字来声明一个variables呢? 我认为for循环使用的迭代器variables只在其范围内有效。

在C#中等效的Java Map

我想用我select的一个键来保存一个集合中的项目列表。 在Java中,我会简单地使用Map如下: class Test { Map<Integer,String> entities; public String getEntity(Integer code) { return this.entities.get(code); } } 有没有在C#中这样做的等效方式? System.Collections.Generic.Hashset不使用散列,我不能定义一个自定义types键System.Collections.Hashtable不是一个generics类 System.Collections.Generic.Dictionary没有get(Key)方法

什么是.NET中的ApplicationException?

为了抛出exception,我通常使用内置的exception类,例如ArgumentNullException和NotSupportedException 。 但是,有时我需要使用自定义exception,在这种情况下我写: class SlippedOnABananaException : Exception { } class ChokedOnAnAppleException : Exception { } 等等。 然后我抛出并在我的代码中捕获这些。 但是今天我遇到了ApplicationException类 – 我应该使用它吗? 这是为了什么? 有很多有效的相同的exception类与不同的名字(我通常不需要任何单独的function)似乎效率低下。 但是我不喜欢捕获一个generics的ApplicationException并且不得不使用额外的代码来确定错误是什么。 ApplicationException应该适合我的代码?

删除调用析构函数吗?

我有一个类(A)使用堆内存分配的一个领域。 类A被实例化并作为指针字段存储在另一个类(B)中。 当我完成对象B,我打电话给删除,我假设调用析构函数…但是这是否也调用类A中的析构函数? 编辑: 从答案中,我认为(如果不正确,请编辑): delete B实例B调用B ::〜B(); 它调用A::~A(); and A::~A 应该明确地delete and A::~A所有堆分配成员variables。 最后将存储所述B实例的内存块返回给堆 – 当使用new时,它首先在堆上分配一块内存,然后调用构造函数对其进行初始化,现在在调用所有析构函数完成对象对象所在的块返回到堆中。