Tag: C#的

C#错误:父不包含一个构造函数,它需要0个参数

我的代码是 public class Parent { public Parent(int i) { Console.WriteLine("parent"); } } public class Child : Parent { public Child(int i) { Console.WriteLine("child"); } } 我收到错误: 父母不包含带有0个参数的构造函数。 我明白问题是, Parent没有0参数的构造函数。 但我的问题是,为什么我们需要一个零参数的构造函数? 为什么没有它的代码工作?

如何使用单个值填充/实例化C#数组?

我知道C#中实例化的值types数组会自动填充types的默认值 (例如,对于bool为false,对于int等为0)。 有没有一种方法来自动填充一个不是默认的种子值的数组? 无论是在创build或内置的方法(如Java的Arrays.fill() )? 假设我想要一个默认为true的布尔数组,而不是false。 有没有一个内置的方法来做到这一点,或者你只需​​要通过for循环遍历数组? // Example pseudo-code: bool[] abValues = new[1000000]; Array.Populate(abValues, true); // Currently how I'm handling this: bool[] abValues = new[1000000]; for (int i = 0; i < 1000000; i++) { abValues[i] = true; } 不得不遍历整个数组并将每个值“重置”为true似乎是无效的。 有没有办法解决? 也许通过翻转所有值? 在input这个问题并思考它之后,我猜测默认值只是C#如何在后台处理这些对象的内存分配的结果,所以我想这可能是不可能的。 但是我仍然很想知道!

在C#中调整HttpWebRequest连接超时

我相信经过长时间的研究和search,我发现我想要做的事情可能会更好地通过build立一个asynchronous连接,并在所需的超时后终止它。但是,我会继续问,无论如何! 快速代码片段: HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create(url); webReq.Timeout = 5000; HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); // this takes ~20+ sec on servers that aren't on the proper port, etc. 我有一个HttpWebRequest方法是在一个multithreading应用程序,我连接到大量的公司Web服务器。 在服务器没有响应的情况下, HttpWebRequest.GetResponse()大约需要20秒钟超时,即使我指定了仅5秒的超时时间。 为了定期通过服务器,我想跳过那些连接超过5秒的连接。 所以问题是: “是否有一个简单的方法来指定/减lessWebRequest或HttpWebRequest的连接超时?

防止.NET垃圾收集很短的时间

我有一个处理大量数据的高性能应用程序。 它在很短的时间内接收,分析和丢弃大量的信息。 这导致我目前正试图优化,但也会导致次要问题的相当数量的对象stream失。 当垃圾收集开始时,可​​能会导致一些长时间的延迟,因为它会清理一些东西(我的意思是10秒到100毫秒)。 99%的时间是可以接受的,但是对于大约1-2分钟的短时窗口,我需要绝对确保垃圾收集不会造成延迟。 我知道这些时间会在什么时候发生,我只是需要一种方法来确保垃圾收集在这段时间内不会发生。 该应用程序是使用.NET 4.0 Framework在C#中编写的,如果重要,则使用托pipe代码和非托pipe代码。 我的问题是 是否有可能暂停垃圾收集整个程序? 是否有可能使用System.GC.Collect()在窗口之前强制垃圾收集,我需要免费的垃圾收集,如果我做了多久,我会成为垃圾收集免费? 人们对减less垃圾收集整体需求有什么build议? 注 – 这个系统相当复杂,有很多不同的组件。 我希望避免去一个方法,我必须在程序的每个类上实现一个自定义的IDisposable接口。

比较两个复杂对象的最佳方法

我有两个复杂的对象,如Object1和Object2 。 他们有大约5个级别的子对象。 我需要最快的方法来说明他们是否相同。 这怎么可以在C#4.0中完成?

#include所有.cpp文件到一个编译单元中?

我最近有理由使用通常的debugging和发布configuration的一些Visual Studio C ++项目,但也是“全部释放”和“全部debugging”,这是我以前从未见过的。 事实certificate,项目的作者有一个单独的ALL.cpp,其中包括所有其他的.cpp文件。 *所有configuration只是build立这一个ALL.cpp文件。 当然,排除在常规configuration之外,常规configuration不会build立ALL.cpp 我只是想知道这是否是一种常见的做法? 它带来了什么好处? (我的第一反应是它闻起来不好。) 你会遇到什么样的陷阱? 我能想到的一点是,如果你的.cpps中有匿名命名空间,那么它们不再是“私有”的cpp,而是现在可以在其他cpp中看到呢? 所有的项目都build立DLL,所以匿名命名空间中的数据不是一个好主意,对吗? 但function可以吗? 干杯。

C#generics列表<T>如何获取T的types?

我正在做一个reflection项目,现在我卡住了。 如果我有一个可以容纳一个List的“myclass”对象,如果属性myclass.SomList是空的,任何人都知道如何获得下面的代码中的types? List<myclass> myList = dataGenerator.getMyClasses(); lbxObjects.ItemsSource = myList; lbxObjects.SelectionChanged += lbxObjects_SelectionChanged; private void lbxObjects_SelectionChanged(object sender, SelectionChangedEventArgs e) { Reflect(); } Private void Reflect() { foreach (PropertyInfo pi in lbxObjects.SelectedItem.GetType().GetProperties()) { switch (pi.PropertyType.Name.ToLower()) { case "list`1": { // This works if the List<T> contains one or more elements. Type tTemp = GetGenericType(pi.GetValue(lbxObjects.SelectedItem, null)); // but […]

为什么不从构造函数推断模板参数?

我今天的问题很简单:编译器为什么不能从类构造函数中推断出模板参数,就像从函数参数中可以这样做呢? 例如,为什么以下代码无效: template<typename obj> class Variable { obj data; public: Variable(obj d) { data = d; } }; int main() { int num = 2; Variable var(num); //would be equivalent to Variable<int> var(num), return 0; //but actually a compile error } 正如我所说,我明白这是无效的,所以我的问题是为什么不是? 会允许这个创build任何主要的语法漏洞? 是否有一个不希望这个function的实例(推断types会导致问题)? 我只是想了解允许模板推理function背后的逻辑,但不适合适当构build的类。

如何获得C程序中的当前目录?

我正在做一个C程序,我需要从程序启动的目录。 该程序是为UNIX计算机编写的。 我一直在看opendir()和telldir() ,但是telldir()返回一个off_t (long int) ,所以它真的帮不了我。 我怎样才能得到一个string(字符数组)的当前path?

如何从getter或setter调用asynchronous方法?

什么是从C#中的getter或setter调用asynchronous方法最优雅的方式? 这里有一些伪代码来帮助解释我自己。 async Task<IEnumerable> MyAsyncMethod() { return await DoSomethingAsync(); } public IEnumerable MyList { get { //call MyAsyncMethod() here } }