Tag: C#的

C#命名空间别名 – 有什么意义?

我一直在努力学习更多关于C#语言的知识,但是我一直无法看到一种情况,就是像名称空间别名一样 using someOtherName = System.Timers.Timer; 在我看来,这只会增加对语言理解的困惑。 有人可以解释一下吗? 谢谢

学习Java的C#开发人员有什么可以忽略的最大差异?

对于渴望学习Java的c#开发人员来说,应该指出两种语言之间有什么大的根本区别? 也许有些人可能会认为是相同的,但有一些不容忽视的import方面呢? (或者你真的可以搞砸了!) 也许就OOP构造,GC工作方式,引用,部署相关等等而言

在静态类中声明一个字典

如何在静态类中声明静态字典对象? 我试过了 public static class ErrorCode { public const IDictionary<string, string> ErrorCodeDic = new Dictionary<string, string>() { { "1", "User name or password problem" } }; } 但是编译器会抱怨:“ 除了string以外的引用types的const字段只能用null初始化 ”。

文件描述符和文件指针有什么区别?

我想知道文件描述符和文件指针之间的区别。 另外,在什么情况下你会使用一个而不是另一个?

如何初始化一个List <T>到一个给定的大小(而不是容量)?

.NET提供了一个通用的列表容器,其性能几乎相同(请参阅数组与列表的性能问题)。 然而,它们在初始化方面有很大不同 数组很容易初始化为默认值,根据定义,它们已经具有一定的大小: string[] Ar = new string[10]; 它允许一个安全地分配随机项目,说: Ar[5]="hello"; 与列表的东西更棘手。 我可以看到两种执行相同初始化的方法,这两种方法都不是优雅的: List<string> L = new List<string>(10); for (int i=0;i<10;i++) L.Add(null); 要么 string[] Ar = new string[10]; List<string> L = new List<string>(Ar); 什么将是一个更干净的方式? 编辑:到目前为止的答案是指能力,这是预填充列表以外的东西。 例如,刚刚创build的容量为10的列表中,不能做L[2]="somevalue" 编辑2:人们想知道为什么我想用这种方式列出,因为它不是它们打算使用的方式。 我可以看到两个原因: 人们可以相当有说服力地争辩说,名单是“下一代”arrays,增加了灵活性,几乎没有惩罚。 因此,应该默认使用它们。 我指出他们可能不容易初始化。 目前我写的是一个基类,它提供了作为更大框架的一部分的默认function。 在我提供的默认function中,List的大小在高级中是已知的,因此我可以使用一个数组。 不过,我想提供任何基类dynamic扩展它的机会,因此我select一个列表。

根据linq的ID列表select多个logging

我有一个包含我的UserProfile表的Id的列表。 我如何可以select所有的用户UserProfiles基于我使用LINQ的var的列表? var idList = new int[1, 2, 3, 4, 5]; var userProfiles = _dataContext.UserProfile.Where(……); 我在这里卡住了 我可以使用for循环等,但我宁愿这样做与LINQ 。

const char *和char const * – 它们是一样的吗?

根据我的理解, const修饰符应该从右到左读。 从那里,我明白了: const char* 是一个指针,它的char元素不能被修改,但指针本身可以和 char const* 是一个mutable字符的常量指针。 但是我得到以下代码的错误: const char* x = new char[20]; x = new char[30]; //this works, as expected x[0] = 'a'; //gives an error as expected char const* y = new char[20]; y = new char[20]; //this works, although the pointer should be const (right?) y[0] = 'a'; //this […]

以零执行时间循环

是否有可能有一个零执行时间的循环? 我认为,即使是一个空循环应该有一个执行时间,因为有一个相关的开销。

本地计算机上的Windows服务启动,然后停止错误

通常,我得到这个错误:(在本地计算机上的“服务名称”服务启动,然后停止,有些服务在没有被其他服务或程序使用时自动停止),当我的代码出现问题时驱动器path等.Windows服务不会启动。 我有一个Windows服务备份文件夹/文件,如果它达到了大小限制的位置。 详细信息全部由Windows服务读取的XMLconfiguration提供。 我有一个单独的Windows窗体,有一个button,正是我的Windows服务的onstart正在做的事情。 我使用我的Windows窗体来debugging代码之前,我把它放在我的Windows服务。 当我开始我的Windows窗体。 它做它想做的事情。 当我把我的代码在Windows服务OnStart()方法的错误出现。 这是我的代码: protected override void OnStart(string[] args) { private static string backupConfig = @"D:\LogBackupConfig\backupconfig.xml"; private static string serviceStat = @"D:\LogBackupConfig\Status.txt"; private static string fileFolderStat = @"D:\LogBackupConfig\FileFolderStat.txt"; protected override void OnStart(string[] args) { if (File.Exists(backupConfig)) { FileSystemWatcher watcher = new FileSystemWatcher(); XmlTextReader reader = new XmlTextReader(backupConfig); XmlNodeType type; List<string> […]

在C ++中使用double包含警卫

所以我最近在一个讨论中,我在哪里工作,在那里我质疑使用一个单一的后卫一个双重的后卫。 我的意思是双重后卫如下: 头文件“header_a.hpp”: #ifndef __HEADER_A_HPP__ #define __HEADER_A_HPP__ … … #endif 将头文件包含在头文件或源文件中时: #ifndef __HEADER_A_HPP__ #include "header_a.hpp" #endif 现在我明白,在头文件中使用guard是为了防止多个包含已经定义的头文件,这是常见的和有据可查的。 如果macros已经被定义,整个头文件被编译器视为“空白”,并且阻止了双重包含。 很简单。 我不明白的问题是在#include "header_a.hpp"周围使用#ifndef __HEADER_A_HPP__和#endif 。 同事告诉我,这为夹杂物增加了第二层保护,但是如果第一层绝对地完成了工作(或者是做了这个工作),我看不出第二层如何是有用的。 我能想到的唯一好处就是它彻底阻止了连接器无法find文件。 这是否意味着提高编译时间(这不是提到的好处),还是在这里有其他工作,我没有看到?