Tag: C#的

致命错误:Visual Studio中的“无目标体系结构”

当我尝试在Win32或x64模式下使用Visual Studio 2010编译我的c ++项目时,出现以下错误: >C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(135): fatal error C1189: #error : "No Target Architecture" 我的预处理器定义说WIN32; _DEBUG; _CONSOLE;%(PreprocessorDefinitions) 什么是造成这个错误,我该如何解决它? // winnt.h: lines 127-136, MSVS says this is an inactive preprocessor block #if defined(_WIN64) #if defined(_AMD64_) #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) #elif defined(_IA64_) #define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD […]

忽略Json.net中的空字段

我有一些数据,我必须序列化为JSON。 我正在使用JSON.NET。 我的代码结构是这样的: public struct structA { public string Field1; public structB Field2; public structB Field3; } public struct structB { public string Subfield1; public string Subfield2; } 问题是,我的JSON输出只需要Field1或Field2或Field3 – 它取决于使用哪个字段(即非空)。 默认情况下,我的JSON如下所示: { "Field1": null, "Field2": {"Subfield1": "test1", "Subfield2": "test2"}, "Field3": {"Subfield1": null, "Subfield2": null}, } 我知道我可以使用NullValueHandling.Ignore ,但是这给了我看起来像这样的JSON: { "Field2": {"Subfield1": "test1", "Subfield2": "test2"}, "Field3": […]

c#写入事件查看器

我试图写在我的C#代码的事件查看器,但我得到了美妙的“对象引用未设置为对象的实例”消息。 我会很感激这个代码的一些帮助,无论是什么错误,甚至更好的方式来做到这一点。 以下是我写入事件日志的内容: private void WriteToEventLog(string message) { string cs = "QualityDocHandler"; EventLog elog = new EventLog(); if (!EventLog.SourceExists(cs)) { EventLog.CreateEventSource(cs, cs); } elog.Source = cs; elog.EnableRaisingEvents = true; elog.WriteEntry(message); } 以下是我想要调用的地方: private readonly Random _rng = new Random(); private const string _chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private string RandomString(int size) { try { char[] buffer = […]

优雅的方式来结合多个元素的集合?

说我有任意数量的集合,每个集合包含相同types的对象(例如, List<int> foo和List<int> bar )。 如果这些集合本身位于一个集合中(例如List<List<int>> ,则可以使用SelectMany将它们合并到一个集合中。 但是,如果这些集合不在同一个集合中,那么我的印象就是我必须编写如下的方法: public static IEnumerable<T> Combine<T>(params ICollection<T>[] toCombine) { return toCombine.SelectMany(x => x); } 然后我会这样叫: var combined = Combine(foo, bar); 有没有一个干净,优雅的方式来结合(任意数量)的集合,而无需编写像上面的Combine这样的实用程序方法? 看起来很简单,在LINQ中应该有办法做到,但也许不行。

将LINQ结果转换为ObservableCollection

事实上,这是一个LINQ的结果可能不是相关的问题,但无论如何我提到它 – 因为这是导致这个问题的上下文。 我运行一个LINQ查询。 结果是一个; IEnumerable<MyClass> 我想把结果放到一个ObservableCollection中; ObservableCollection<MyClass> 我该如何做这个演员? (无需运行IEnumerable并将元素复制到ObservableCollection)。 我注意到LINQ有几个To ..()函数,但它似乎没有帮助我这个演员..?

是只读自动实现的属性可能吗?

我在MSDN上发现了一个话题,说是的,这是可能的。 我做了一个testing,似乎打破了这个说法: using System; namespace Test { class Program { static void Main(string[] args) { Foo f = new Foo("1"); Console.WriteLine(f.Bar); // prints 1 f.Test("2"); Console.WriteLine(f.Bar);// successfully prints 2 } } class Foo { public Foo(string b) { this.Bar = b; } public string Bar { get; private set; } public void Test(string b) { […]

自动属性只有吸气剂,可以设置,为什么?

我创build了一个自动化属性: public int Foo { get; } 这只是吸气剂。 但是当我构build一个构造函数时,我可以改变它的值: public MyClass(string name) { Foo = 5; } 为什么这是可能的,即使这是只能得到的?

是否有可能开始迭代从第一个使用foreach以外的元素?

我正在考虑为自定义集合(一棵树)实现IEnumerable,所以我可以使用foreach来遍历我的树。 但据我所知,foreach总是从集合的第一个元素开始。 我想selectforeach从哪个元素开始。 是否有可能以某种方式改变foreach开始的元素?

如何在C ++ 11中输出枚举类的值

我怎样才能输出在C + + 11中的enum class的值? 在C + + 03中是这样的: #include <iostream> using namespace std; enum A { a = 1, b = 69, c= 666 }; int main () { A a = A::c; cout << a << endl; } 在c ++ 0x这个代码不能编译 #include <iostream> using namespace std; enum class A { a = 1, […]

当前上下文中不存在名称“ViewBag” – Visual Studio 2015

我又开始在ASP.NET中开发,并在Visual Studio中遇到了一个小错误。 使用一些razorfunction时,我的.cshtml文件显示错误。 例如“名称”ViewBag“在当前上下文中不存在”。 这是一张图片: 我正在使用一个演示项目。 你可以在这里find这个项目: https : //github.com/Wintellect/Angular-MVC-Cookbook/tree/master/BasicProject 我已经浏览了其他几个线程,大多数build议更新web.config文件。 这两个configuration文件已经存在,因为它是一个非常stream行的演示,我认为它有所有需要的configuration。 我当然会看看这些configuration文件,确实包含了build议的解决scheme。 其他详情: 我已经使用清理和重build解决scheme,但没有改变。 当我创build一个全新的MVC项目时,它确实有效 我的朋友有同样的问题,我们都使用VS 2015和Windows 10 我仍然可以运行该应用程序,它确实工作。 提前致谢。