Tag: C#的

从另一个调用一个构造函数

我有两个构造函数将值提供给只读字段。 class Sample { public Sample(string theIntAsString) { int i = int.Parse(theIntAsString); _intField = i; } public Sample(int theInt) { _intField = theInt; } public int IntProperty { get { return _intField; } } private readonly int _intField; } 一个构造函数直接接收值,另外一个构造函数进行一些计算并获取值,然后设置字段。 现在是这个问题了: 我不想复制设置代码。 在这种情况下,只设置一个字段,但当然可能有多个字段。 为了使字段只读,我需要从构造函数中设置它们,所以我不能将共享代码“提取”到实用程序函数中。 我不知道如何从另一个构造函数中调用。 有任何想法吗?

__attribute __((构造函数))如何工作?

这似乎很清楚,它应该设置的东西。 什么时候运行? 为什么有两个括号? __attribute__是一个函数吗? macros? 句法? 这在C中工作吗? C ++? 它的function需要是静态的吗? 什么时候__attribute__((destructor))运行? 目标C中的示例 : __attribute__((constructor)) static void initialize_navigationBarImages() { navigationBarImages = [[NSMutableDictionary alloc] init]; } __attribute__((destructor)) static void destroy_navigationBarImages() { [navigationBarImages release]; }

为什么在C ++头文件中使用#ifndef和#define?

我已经看到这样的代码通常在头文件的开始: #ifndef HEADERFILE_H #define HEADERFILE_H 并在文件的结尾是 #endif 这个的目的是什么?

如何使用try catch进行exception处理是最佳实践

在维护我的同事代码的同时,即使是自称是高级开发人员的代码,我也会经常看到以下代码: try { //do something } catch { //Do nothing } 或者有时他们将日志logging信息写入日志文件,如下面的try catch块 try { //do some work } catch(Exception exception) { WriteException2LogFile(exception); } 我只是想知道他们做了什么是最好的做法? 这让我感到困惑,因为我认为用户应该知道系统会发生什么。 请给我一些build议。

多字符常量警告

为什么这是一个警告? 我认为有很多情况下更清楚地使用多字符int常量而不是“无意义”的数字,而不是定义具有相同值的常量variables。 当parsingwave / tiff /其他文件types比较清楚地将读取值与一些“EVAW”,“数据”等进行比较而不是相应的值。 示例代码: int waveHeader = 'EVAW'; 为什么会发出警告?

修改Cstring常量?

可能重复: 为什么在写入string时会出现分段错误? 我想写一个函数,反转给定的string传递给它。 但是我不能。 如果我用字符数组提供doReverse函数(见下面的代码),我的代码运行良好。 我不明白为什么这不起作用。 我能够访问doReverse str[0] ,但我不能通过使用char指针来更改数组的任何值。 有任何想法吗? void doReverse(char *str) { str[0] = 'b'; } void main(void) { char *str = "abc"; doReverse(str); puts(str); } 更新: 我知道如何通过传递一个字符数组来写一个反向函数: void reverse1(char p[]) { int i, temp, y; for (i = 0, y = strlen(p); i < y; ++i, –y) { temp = p[y-1]; p[y-1] […]

为什么我的.NET 4应用程序知道.NET 4没有安装

我开发了一个针对.NET 4的应用程序,XCOPY将它安装到Windows XP机器上。 我告诉了机器的主人,他们需要安装.NET Framework 4来运行我的应用程序,他告诉我他做的(不是一个可靠的来源)。 当我运行的应用程序,我被提出了一个消息框,说这个应用程序需要.NET Framework 4,我想安装它? 单击“是”button将我带到Microsoft网站,稍后点击几下.NET 4,应用程序成功启动。 过去,将XCOPY-安装.NET应用程序安装到没有安装正确版本的.NET的机器上导致应用程序在启动时崩溃,而没有提供给用户的有用信息。 这次为什么不一样? 它是否内置于我的应用程序,因为我的目标是.NET X? 它是否已经安装在目标机器上? 我喜欢这个function。 我想知道如何利用它在未来。

卡在C#中洗牌

我正在为一个列出一副纸牌内容的项目写一个代码,询问这个人想要洗牌多less次,然后洗牌。 它必须使用一个方法来使用System.Random类创build两个随机整数。 这些是我的课程: Program.cs中: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Deck mydeck = new Deck(); foreach (Card c in mydeck.Cards) { Console.WriteLine(c); } Console.WriteLine("How Many Times Do You Want To Shuffle?"); } } } Deck.cs: namespace ConsoleApplication1 { class Deck { Card[] cards = new Card[52]; string[] numbers = new […]

静态初始化命令失败

我从一本书中读到了SIOF,它举了一个例子: //file1.cpp extern int y; int x=y+1; //file2.cpp extern int x; int y=x+1; 现在我的问题是: 在上面的代码中,会发生下面的事情吗? 当编译file1.cpp时,编译器会保留y,即不为其分配存储空间。 编译器为x分配存储空间,但不会初始化它。 当编译file2.cpp时,编译器会将x保留,即不为其分配存储空间。 编译器为y分配存储空间,但不会初始化它。 当链接file1.o和file2.o时,现在让file2.o被初始化,所以现在: x是否获得0的初始值? 或没有得到初始化?

C Minishell添加pipe道

所以我正在制作一个UNIX minishell,并试图添加pipe道,所以我可以做这样的事情: ps aux | grep dh | grep -v grep | cut -c1-5 不过,我在缠绕pipe道部分时遇到了麻烦。 我把所有的“|” 字符为0,然后将每行作为普通线路运行。 但是,我试图转移输出和input。 一个命令的input需要是前一个命令的输出,一个命令的输出需要是下一个命令的input。 我正在做这个使用pipe道,但是我不知道在哪里调用pipe()以及在哪里closures它们。 从主处理函数processline()中,我有这样的代码: if((pix = findUnquotChar(line_itr, '|'))) { line_itr[pix++] = 0; if(pipe (fd) < 0) perror("pipe"); processline(line_itr, inFD, fd[1], pl_flags); line_itr = &(line_itr[pix]); while((pix = findUnquotChar(line_itr, '|')) && pix < line_len) { line_itr[pix++] = 0; //? if(pipe […]