Tag: C#的

我如何使用C中的动态多维数组?

有人知道如何使用C动态分配的多维数组? 那可能吗?

C ++:空类的对象的大小是多少?

我想知道什么是一个空的类的对象的大小 。 它肯定不能是0字节,因为它应该可以像任何其他对象一样引用和指向它。 但是,这样的对象有多大? 我用这个小程序: #include <iostream> using namespace std; class Empty {}; int main() { Empty e; cerr << sizeof(e) << endl; return 0; } 我在Visual C ++和Cygwin-g ++编译器上得到的输出是1个字节 ! 这对我来说有点令人惊讶,因为我期待它是机器字(32位或4字节)的大小。 任何人都可以解释为什么 1字节的大小? 为什么不是 4个字节? 这是依赖于编译器还是机器呢? 另外,有人可以给出一个更强有力的理由,为什么一个空的类对象不会是大小为0字节?

使用linq删除列表中的重复项

我有一个类properties (Id, Name, Code, Price) Items properties (Id, Name, Code, Price) 。 项目列表中填充了重复的项目。 例如: 1 Item1 IT00001 $100 2 Item2 IT00002 $200 3 Item3 IT00003 $150 1 Item1 IT00001 $100 3 Item3 IT00003 $150 如何使用linq删除列表中的重复项?

在整个范围内均匀生成随机数

我需要在指定的时间间隔内产生随机数,[max; min]。 此外,随机数应该在整个区间内均匀分布,而不是位于特定点。 当然,我产生为: for(int i=0; i<6; i++) { DWORD random = rand()%(max-min+1) + min; } 在我的测试中,随机数只在一点附近产生。 Example min = 3604607; max = 7654607; 生成的随机数字: 3631594 3609293 3630000 3628441 3636376 3621404 从下面的答案:OK,RAND_MAX是32767.我在C ++ Windows平台上。 有没有其他的方法来产生均匀分布的随机数字?

如何正确地重载ostream的<<运算符?

我正在用C ++写一个矩阵运算的小型矩阵库。 然而,我的编译器抱怨,之前没有。 这个代码被放置在一个架子上6个月,之间我升级我的电脑从debian蚀刻到lenny(g ++(Debian 4.3.2-1.1)4.3.2),但是我有相同的问题,在Ubuntu系统相同的g ++ 。 这是我的矩阵类的相关部分: namespace Math { class Matrix { public: […] friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix); } } 而“实施”: using namespace Math; std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) { […] } 这是编译器给出的错误: matrix.cpp:459:error:'std :: ostream&Math :: Matrix :: operator <<(std :: ostream&,const Math :: Matrix&)'必须只有一个参数 […]

什么是逐行读取文本文件的最快方法?

我想逐行阅读一个文本文件。 我想知道如果我在.NET C#范围内尽可能有效地做到这一点。 这是我到目前为止的尝试: var filestream = new System.IO.FileStream(textFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite); var file = new System.IO.StreamReader(filestream, System.Text.Encoding.UTF8, true, 128); while ((lineOfText = file.ReadLine()) != null) { //Do something with the lineOfText }

多维数组如何在内存中格式化?

在C中,我知道我可以使用下面的代码在堆上动态分配一个二维数组: int** someNumbers = malloc(arrayRows*sizeof(int*)); for (i = 0; i < arrayRows; i++) { someNumbers[i] = malloc(arrayColumns*sizeof(int)); } 显然,这实际上创建了一个指向一堆单独的一维整数数组的指针的一维数组,“系统”可以找出我的意思,当我要求: someNumbers[4][2]; 但是当我静态声明一个二维数组,如下面的行…: int someNumbers[ARRAY_ROWS][ARRAY_COLUMNS]; …是否在堆栈上创建了类似的结构,还是完全是另一种形式? (也就是说,它是一个指针的一维数组吗?如果不是,它是什么,以及如何得到它的引用?) 另外,当我说“系统”时,究竟是什么负责确定呢? 内核? 或者C编译器在编译时将其整理出来?

为什么我不能做一个引用向量?

当我这样做: std::vector<int> hello; 一切都很好。 但是,当我把它作为引用的向量时: std::vector<int &> hello; 我得到可怕的错误,如“错误C2528:'指针':参考指针是非法的”。 我想把一堆对struct的引用放到一个向量中,这样我就不需要插入指针了。 为什么矢量这个发脾气? 我唯一的选择是使用指针向量吗?

删除这个允许吗?

是否允许delete this; 如果delete语句是将在该类的该实例上执行的最后一个语句? 当然,我确定this指针代表的对象是new创建的。 我正在考虑这样的事情: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch over to a new Module, eg: controller->setWorkingModule(new OtherModule()); // since the new "OtherModule" object will take the lead, // I want to get rid of this "SomeModule" object: […]

使用C#通过SMTP发送电子邮件

我不明白为什么这个代码不工作。 我收到一个错误,说不能分配属性 MailMessage mail = new MailMessage(); SmtpClient client = new SmtpClient(); client.Port = 25; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Host = "smtp.gmail.com"; mail.To = "user@hotmail.com"; // <– this one mail.From = "you@yourcompany.com"; mail.Subject = "this is a test email."; mail.Body = "this is my test email body"; client.Send(mail);