Tag: C#的

将基类转换为派生类

在C#中是否有可能将基类对象显式转换为其派生类之一? 目前认为我必须为我的派生类创build一个构造函数,接受基类对象作为参数并复制属性值。 我不太喜欢这个想法,所以如果可能的话,我想避免它。 这似乎不应该工作(对象被实例化为新的基地,所以内存不应该分配给派生类的额外成员),但C#似乎让我这样做: class BaseClass { … some stuff … } class DerivedClass : BaseClass { public bool MyDerivedProperty{ get; set; } } static void Main(string[] args) { BaseClass myBaseObject = new BaseClass(); DerivedClass myDerivedObject = myBaseObject as DerivedClass; myDerivedObject.MyDerivedProperty = true; }

如何获得列表中的倒数第二个元素?

我有一个std::list<double> foo; 我在用着 if (foo.size() >= 2){ double penultimate = *(–foo.rbegin()); } 但是这总是给我一个penultimate的任意值。 我究竟做错了什么?

BLAS如何获得如此极致的performance?

出于好奇,我决定将自己的matrix乘法函数与BLAS实现进行比较…我最不感到惊讶的结果是: 自定义实现,10个1000x1000matrix乘法的试验: Took: 15.76542 seconds. BLAS实施,1000×1000matrix乘法的10次试验: Took: 1.32432 seconds. 这是使用单精度浮点数。 我的实施: template<class ValT> void mmult(const ValT* A, int ADim1, int ADim2, const ValT* B, int BDim1, int BDim2, ValT* C) { if ( ADim2!=BDim1 ) throw std::runtime_error("Error sizes off"); memset((void*)C,0,sizeof(ValT)*ADim1*BDim2); int cc2,cc1,cr1; for ( cc2=0 ; cc2<BDim2 ; ++cc2 ) for ( cc1=0 ; cc1<ADim2 […]

在WPF DataGrid中单击编辑

我希望用户能够将单元格置于编辑模式,并单击单击来突出显示单元格所在的行。 默认情况下,这是双击。 我如何重写或实现这个? 我search了谷歌,codeplex答案不适合我。 我对WPF和编码一般都很陌生,所以一个简单的答案是更好的。

const和non const key有什么区别?

以下两行有什么区别? map<int, float> map_data; map<const int, float> map_data;

什么是同时迭代两个或多个容器的最佳方法

C ++ 11提供了多种方式来遍历容器。 例如: 基于范围的循环 for(auto c : container) fun(c) 的std :: for_each的 for_each(container.begin(),container.end(),fun) 然而,推荐的方式是遍历两个(或更多)相同大小的容器来完成类似的操作: for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }

为什么memcmp(a,b,4)只是有时被优化为uint32比较?

鉴于此代码: #include <string.h> int equal4(const char* a, const char* b) { return memcmp(a, b, 4) == 0; } int less4(const char* a, const char* b) { return memcmp(a, b, 4) < 0; } x86_64上的GCC 7引入了对第一种情况的优化(Clang已经做了很长一段时间): mov eax, DWORD PTR [rsi] cmp DWORD PTR [rdi], eax sete al movzx eax, al 但第二种情况仍然调用memcmp() : sub rsp, 8 […]

为什么我可以用C ++定义函数中的结构和类?

我只是在C ++中错误地做了这样的事情,而且工作。 我为什么要这样做? int main(int argc, char** argv) { struct MyStruct { int somevalue; }; MyStruct s; s.somevalue = 5; } 在做完这些之后,我很早以前就想起了一个关于这个诀窍的方法,作为一种穷人的C ++函数式编程工具,但是我不记得为什么这个方法是有效的,或者是我读过的。 任何问题的答案都欢迎! 注意:虽然在写这个问题时我没有得到任何关于这个问题的参考,但现在的边栏指出了,所以我把它放在这里作为参考,不pipe怎样,问题是不同的,但可能是有用的。

为什么在C和C ++中定义的NULL指针是不同的?

在C中, NULL被定义为(void *)0而在C ++中则为0 。 为什么这样? 在CI中可以理解,如果NULL不是types转换(void *)那么编译器可能会/不会生成警告。 除此之外,有什么理由吗?

在devise应用程序时,如何使用Func <>和Action <>?

所有关于Func <>和Action <>的例子都很简单,就像下面的例子一样,你可以看到它们在技术上是如何工作的,但是我希望看到它们用在解决以前无法解决的问题的例子中只有以更复杂的方式来解决,即我知道它们是如何工作的,我可以看到它们是简洁而有力量的 ,所以我想更深入地理解它们解决什么样的问题,以及如何在应用程序devise。 你用什么方式(模式)使用Func <>和Action <>来解决实际问题? using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestFunc8282 { class Program { static void Main(string[] args) { //func with delegate Func<string, string> convert = delegate(string s) { return s.ToUpper(); }; //func with lambda Func<string, string> convert2 = s => s.Substring(3, 10); //action Action<int,string> recordIt = (i,title) […]