Tag: C#的

在Windows窗体中提示对话框

我正在使用System.Windows.Forms但奇怪的是没有能力来创build它们。 我怎样才能得到像JavaScript提示对话框,没有JavaScript? MessageBox很好,但用户无法inputinput。

序列不包含元素?

我目前在两个地方使用单个查询来获取数据库中的一行。 BlogPost post = (from p in dc.BlogPosts where p.BlogPostID == ID select p).Single(); 当检索将数据放入文本框的行时,查询很好,但在用于检索行以编辑并将其放回数据库时,将返回错误“Sequence contains no elements”。 我不明白为什么它会在一个实例中find合适的行,而不是另一个。 (使用ASP.NET MVC和LINQ)

for循环结尾的“;”的目的是什么?

我发现了下面的代码: int func_prim (int zahl) { int count; if (zahl < 0) return -1; for (count = 2; zahl % count != 0 && zahl >= count; count++); if (count == zahl) return 1; return 0; } function的关键是检查一个数字是否是一个素数。 我不明白为什么for循环有; 最后: v for (count = 2; zahl % count != 0 && zahl >= count; count++); […]

用C ++parsingINI文件最简单的方法是什么?

我试图用C ++parsing一个INI文件。 什么是最好的方式来实现这个任何提示? 我应该使用Windows API工具进行INI文件处理(我完全不熟悉),一个开源解决scheme还是试图手动parsing它?

如何结合|| 条件语句中的操作符

代替 if (foo == "1" || foo == "5" || foo == "9" … ) 我喜欢把它们组合起来,类似于以下(不起作用): if (foo == ("1" || "5" || "9" … )) 那可能吗?

+运算符如何在C中工作?

当理解如何在C中实现+ , – , *和/等基本运算符时,我从一个有趣的答案中find以下片段。 // replaces the + operator int add(int x, int y) { while(x) { int t = (x & y) <<1; y ^= x; x = t; } return y; } 似乎这个函数演示+实际上在后台工作。 然而,我理解这一点太困惑了。 我相信这样的操作是使用编译器生成的汇编语言很长一段时间来完成的! 我的问题是:是+运营商实施的代码张贴在MOST实现? 这是否利用二进制补码或其他实现相关的function? 如果有人能解释它是如何工作的,我将非常感激。 嗯…也许这个问题是有点偏离主题,但我想通过这些运营商是有点好看的。

如何在使用原始存储时模拟EBO?

在实现存储任意types的对象(可以是或不可以是类types)的低级genericstypes时,我使用了一个组件,它可能是空的,以利用空基优化 : template <typename T, unsigned Tag = 0, typename = void> class ebo_storage { T item; public: constexpr ebo_storage() = default; template < typename U, typename = std::enable_if_t< !std::is_same<ebo_storage, std::decay_t<U>>::value > > constexpr ebo_storage(U&& u) noexcept(std::is_nothrow_constructible<T,U>::value) : item(std::forward<U>(u)) {} T& get() & noexcept { return item; } constexpr const T& get() const& noexcept { […]

在.NET中,null的散列码应该总是为零

鉴于类似于System.Collections.Generic.HashSet<>集合接受null作为集合成员,可以询问null的散列代码应该是什么。 它看起来像框架使用0 : // nullable struct type int? i = null; i.GetHashCode(); // gives 0 EqualityComparer<int?>.Default.GetHashCode(i); // gives 0 // class type CultureInfo c = null; EqualityComparer<CultureInfo>.Default.GetHashCode(c); // gives 0 这可以是(一点)可空的枚举的问题。 如果我们定义 enum Season { Spring, Summer, Autumn, Winter, } 那么Nullable<Season> (也称为Season? )可以只取五个值,但其中的两个,即null和Season.Spring ,具有相同的哈希码。 写这样一个“更好的”相等比较器是很诱人的: class NewNullEnumEqComp<T> : EqualityComparer<T?> where T : struct { public […]

不同的编译器调用不同的演员操作符

考虑下面这个简短的C ++程序: #include <iostream> class B { public: operator bool() const { return false; } }; class B2 : public B { public: operator int() { return 5; } }; int main() { B2 b; std::cout << std::boolalpha << (bool)b << std::endl; } 如果我在不同的编译器上编译它,我会得到不同的结果。 使用Clang 3.4和GCC 4.4.7它打印true ,而Visual Studio 2013打印false ,这意味着他们在(bool)b调用不同的演员操作。 根据标准哪个是正确的行为? 在我的理解operator bool()不需要转换,而operator int()需要一个int来bool转换,所以编译器应该select第一个。 […]

如何列出所有加载的程序集?

在.Net中,我想枚举所有AppDomain上的所有加载的程序集。 为我的程序的AppDomain做它很容易AppDomain.CurrentDomain.GetAssemblies() 。 我需要以某种方式访问​​每个AppDomain? 还是有一个工具,这样做?