Tag: C#的

包含语句,标题或来源的位置?

我应该把包括在头文件或源文件? 如果头文件包含include语句,那么如果我在源文件中包含头文件,那么我的源文件是否包含了所有包含在头文件中的文件? 或者我应该只将它们包含在我的源文件中?

警告这个调用没有等待,继续执行当前的方法

刚刚得到VS2012,并试图获得async处理。 比方说,我有一个方法,从阻塞源获取一些值。 我不希望方法的调用者阻止。 我可以编写方法来获取一个callback,当值到达时被调用,但是由于我使用的是C#5,我决定使方法asynchronous,因此调用者不必处理callback: // contrived example (edited in response to Servy's comment) public static Task<string> PromptForStringAsync(string prompt) { return Task.Factory.StartNew(() => { Console.Write(prompt); return Console.ReadLine(); }); } 这是一个调用它的示例方法。 如果PromptForStringAsync不是asynchronous,则此方法需要在callback中嵌套callback。 通过asynchronous,我可以用这种非常自然的方式来编写我的方法: public static async Task GetNameAsync() { string firstname = await PromptForStringAsync("Enter your first name: "); Console.WriteLine("Welcome {0}.", firstname); string lastname = await PromptForStringAsync("Enter your […]

从引用回复中parsing电子邮件内容

我试图弄清楚如何从任何可能包含的引用回复文本中parsing出电子邮件的文本。 我已经注意到,通常电子邮件客户端会在“如此如此写的date”上放置一个“尖括号”。 不幸的是,不是每个人都这样做 有没有人有任何想法如何以编程方式检测答复文本? 我正在使用C#编写这个parsing器。

如何使用Web站点项目types的C#6?

更新了现有的Web站点项目typesVisual Studio 2015,我将框架更改为4.6。 然后我希望在我的代码背后有所有这些新function。 不幸的是我得到像这样的错误: 错误CS8026:在C#5中不能使用“expression式主体特性”function。请使用语言版本6或更高版本。 或者例如: 错误CS8026:function“插入的string”在C#5中不可用。请使用语言版本6或更高版本。 我做了一个快速的Google检查,发现一个人在ScottGu的博客文章(在页面上search“8026”)上发表了一些评论 。 由于我不明白他的解决scheme,再加上我想让解决scheme更明显,所以我创build了这个SOpost。 我的问题: 我怎样才能有一个types的网站 (即不Web应用程序 )的Visual Studio 2015项目识别C#6function?

dot(。)在结构初始值设定项中是什么意思?

static struct fuse_oprations hello_oper = { .getattr = hello_getattr, .readdir = hello_readdir, .open = hello_open, .read = hello_read, }; 我不明白这个C语法。 我甚至无法search,因为我不知道语法的名字。 那是什么?

如何使用命令标志在将来的共享库上设置断点

我正在尝试使用–command标志自动化gdb会话。 我试图设置一个共享库中的函数的断点(一个DLL的Unix等价物)。 我的cmds.gdb如下所示: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r 但是,我收到以下内容: shlomi:〜/ progs / bugs-external / kde / font-breaking $ gdb –command = cmds.gdb … GNU gdb 6.8-2mdv2009.0(Mandriva Linux release 2009.0) Copyright(C)2008 Free Software Foundation,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本 这是免费软件:您可以自由更改和重新分配它。 没有担保,在法律允许的范围内。 键入“显示复制” 和“显示保修”的细节。 这个GDB被configuration为“i586-mandriva-linux-gnu”… (没有finddebugging符号) 未定义函数“IA__FcFontMatch”。 在将来的共享库加载时使断点处于等待状态? (y或[n])[回答N; 不是从terminalinput] 所以它毕竟不设置断点。 我怎样才能让它默认回答“y”设置断点未来的共享库负载? 我记得我能做些事情,但不记得是什么。

为什么代码会主动尝试阻止尾部呼叫优化?

这个问题的标题可能有点奇怪,但事实是,就我所知,根本就没有什么能说明跟尾部优化有关。 然而,在浏览开源项目时,我已经遇到了一些主动尝试阻止编译器进行尾部调用优化的函数,例如CFRunLoopRef的实现,它充满了这样的黑客攻击 。 例如: static void __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__() __attribute__((noinline)); static void __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__(CFRunLoopObserverCallBack func, CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) { if (func) { func(observer, activity, info); } getpid(); // thwart tail-call optimization } 我很想知道为什么这看起来如此重要,是否有任何情况下我作为​​一个正常的开发人员应该保持这种心态呢? 例如。 尾部呼叫优化有常见的缺陷吗?

我的方法应抛出自己的exception,或让.NET抛出,如果文件不存在?

这是我的代码: public void ReadSomeFile(string filePath) { if (!File.Exists(filePath)) throw new FileNotFoundException(); var stream = new FileStream(filePath, ….) ….. } 我应该自己抛出一个exception(请参阅File.Exists检查)? 如果文件不存在, FileStream将会抛出FileNotFoundException 。 这里有什么好的编程习惯? 代码分析说我们应该validation我们的参数。 但是,如果我直接将该parameter passing给另一个方法(我的或其他代码),并且该方法本身会引发exception,那么在我的代码中validation参数有什么好处?

在非虚拟(在VB中可重写)成员无效的设置

我有一个unit testing,我必须模拟一个非虚方法返回一个布尔types public class XmlCupboardAccess { public bool IsDataEntityInXmlCupboard(string dataId, out string nameInCupboard, out string refTypeInCupboard, string nameTemplate = null) { return IsDataEntityInXmlCupboard(_theDb, dataId, out nameInCupboard, out refTypeInCupboard, nameTemplate); } } 所以我有一个XmlCupboardAccess类的模拟对象,我想在我的testing用例中设置这个方法的模拟,如下所示 [TestMethod] Public void Test() { private string temp1; private string temp2; private Mock<XmlCupboardAccess> _xmlCupboardAccess = new Mock<XmlCupboardAccess>(); _xmlCupboardAccess.Setup(x => x.IsDataEntityInXmlCupboard(It.IsAny<string>(), out temp1, out […]

是Linq还是Lambda?

我知道这是Linq: var _Results = from item in _List where item.Value == 1 select item; 而我知道这是Lambda: var _Results = _List.Where(x => x.Value == 1); 编者按:以上不仅仅是Lambda,它是Linq使用谓词是Lambda的“Method Syntax”。 要清楚的是,以上两个样本都是Linq(我原来的post是不正确的,但是我留下错误来说明混淆提示这个问题)。 但是Linq是Lambda的子集还是什么? 为什么有两个看似相同的技术? 是否有技术上的理由来select一个吗?