Tag: C#的

是否有任何有理由忽略被捕获的exception?

哇,我刚刚从外包开发人员那里得到了一个C#的大型项目,在通过我的代码审查的同时,我的分析工具揭示了它被认为是不好的东西。 其中一个令人沮丧的信息是: Exceptions.DontSwallowErrorsCatchingNonspecificExceptionsRule : 2106 defects 开发人员向我保证,他们对所有空的catch块有很好的理由,有时用空的catch块试一下就可以忽略无用的exception,并防止应用程序崩溃。 我觉得这是一个警察,完成学士学位。 我实际查找的一些例子是数据库调用,其中logging被保存到数据库,在这种情况下,如果忽略exception,用户将得到一个好的提示,认为一切正常,并继续他们的工作。 事实上,他们的工作从来没有得救。 我认为这绝对是最可怕的一种错误。 在这种情况下,他们完全错误的抛出代码尝试一个空的catch块。 但是我的问题是,“这种情况在任何情况下都可以接受吗?” 我想不是,但我知道是错的。

C ++初始化类中的静态variables?

我注意到我的一些函数实际上并没有访问这个对象,所以我把它们变成static 。 然后,编译器告诉我,他们访问的所有variables也必须是静态的 – 到目前为止,这是可以理解的。 我有一堆stringvariables如 string RE_ANY = "([^\\n]*)"; string RE_ANY_RELUCTANT = "([^\\n]*?)"; 等等。 然后我使它们都是static const因为它们永远不会改变。 但是,我的程序只编译,如果我把它们从类中移出:否则,MSVC ++ 2010抱怨“只有静态常量积分variables可能在一个类中初始化”。 那很不幸。 有没有解决方法? 我想把他们留在他们所属的class级里面。

C ++ 11“自动”语义

当我使用C ++ 11 auto ,关于是否将parsing为值或引用,types推导的规则是什么? 例如,有时很明显: auto i = v.begin(); // Copy, begin() returns an iterator by value 这些不太清楚: const std::shared_ptr<Foo>& get_foo(); auto p = get_foo(); // Copy or reference? static std::shared_ptr<Foo> s_foo; auto sp = s_foo; // Copy or reference? std::vector<std::shared_ptr<Foo>> c; for (auto foo: c) { // Copy for every loop iteration?

从C#中的date时间提取date部分

代码行DateTime d = DateTime.Today; 结果于10/12/2011 12:00:00 AM 。 我怎样才能得到date部分。当我比较两个date时,我需要忽略时间部分。

有没有办法指定一个string使用printf()打印出多less个字符?

有没有办法指定一个string打印出多less字符(类似于int s中的小数位)? printf ("Here are the first 8 chars: %s\n", "A string that is more than 8 chars"); 想要打印: Here are the first 8 chars: A string

C ++,'if'expression式中的variables声明

这里发生了什么? if(int a = Func1()) { // Works. } if((int a = Func1())) { // Fails to compile. } if((int a = Func1()) && (int b = Func2())) ) { // Do stuff with a and b. // This is what I'd really like to be able to do. } 2003标准中的第6.4.3节阐述了如何在select语句条件中声明的variables的范围延伸到由条件控制的子语句的末尾。 但是,我不知道在什么地方不能在括号里面加括号,也没有在每个条件下只说一个声明。 即使在只需要一个声明的情况下,这个限制也是令人讨厌的。 考虑这个。 bool […]

一个.net反汇编程序/反编译器

我正在寻找一个反编译器或更好的反编译.net。 情况是,我的前任写的汇编源代码丢失了,我想看看它在做什么。 我知道,ildasm随Visual Studio安装,所以我可以在MSIL,但我希望有一个聪明的程序,足以回到C#代码(或最佳近似)。 那里有没有任何工具? (如果不是的话,我想坐下来开始学习MSIL是个很好的借口)

良好的AES初始化vector实践

根据我的问题Aesencryption…缺less一个重要的一块 ,我现在已经了解到,我对string创build可逆encryption的假设是有点closures。 我现在有 public static byte[] EncryptString(string toEncrypt, byte[] encryptionKey) { var toEncryptBytes = Encoding.UTF8.GetBytes(toEncrypt); using (var provider = new AesCryptoServiceProvider()) { provider.Key = encryptionKey; provider.Mode = CipherMode.CBC; provider.Padding = PaddingMode.PKCS7; using (var encryptor = provider.CreateEncryptor(provider.Key, provider.IV)) { using (var ms = new MemoryStream()) { using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { cs.Write(toEncryptBytes, […]

并冲洗缓冲区

在C ++入门书中,第(1)章提到了以下内容: endl是一个特殊的值,称为操纵器,当写入到输出stream时,会有一个新行写入输出,并刷新与该设备关联的缓冲区 。 通过冲洗缓冲区,我们确保用户将立即看到写入stream的输出。 这里“冲洗缓冲区”是什么意思?

如何从embedded式资源中提取文件并将其保存到磁盘?

我想使用CSharpCodeProvider编译下面的代码。 该文件被成功编译,但是当我点击生成的EXE文件,我得到一个错误(Windows正在寻找解决这个问题),没有任何反应。 当我使用CSharpCodeProvider编译下面的代码时,我已经使用这行代码将MySql.Data.dll添加为embedded的资源文件: if (provider.Supports(GeneratorSupport.Resources)) cp.EmbeddedResources.Add("MySql.Data.dll"); 该文件成功embedded(因为我注意到文件大小增加)。 在下面的代码中,我尝试提取embedded的DLL文件并将其保存到System32,但下面的代码由于某种原因不起作用。 namespace ConsoleApplication1 { class Program { public static void ExtractSaveResource(String filename, String location) { //Assembly assembly = Assembly.GetExecutingAssembly(); Assembly a = .Assembly.GetExecutingAssembly(); //Stream stream = assembly.GetManifestResourceStream("Installer.Properties.mydll.dll"); // or whatever //string my_namespace = a.GetName().Name.ToString(); Stream resFilestream = a.GetManifestResourceStream(filename); if (resFilestream != null) { BinaryReader br = new BinaryReader(resFilestream); […]