Tag: C#的

我如何等待Parallel.ForEach完成

我在当前的项目中使用TPL,并使用Parallel.Foreach来旋转很multithreading。 Task类包含Wait()等待,直到任务完成。 像那样,我如何等待Parallel.ForEach完成,然后执行下一个语句?

结构中的成员的顺序是否重要?

我在C中发现了一个奇特的行为。考虑下面的代码: struct s { int a; }; struct z { int a; struct sb[]; }; int main(void) { return 0; } 它编译得很好。 然后像这样改变struct z成员的顺序 struct z { struct sb[]; int a; }; 突然之间,我们得到的编译错误field has incomplete type 'struct s []' 。 这是为什么?

在Asp.net Identity MVC中创buildangular色5

很less有关于使用新的Asp.net身份安全框架的文档。 我拼凑了我可以尝试创build一个新的angular色,并添加一个用户。 我尝试了以下内容: 在ASP.NET身份中添加angular色 看起来它可能已经从这个博客中获得了信息: 用asp.net标识构build一个简单的待办事项应用程序,并将用户与待办事项 我已经将代码添加到模型更改时运行的数据库初始化程序。 它在RoleExists函数上失败,出现以下错误: mscorlib.dll中发生System.InvalidOperationException实体typesIdentityRole不是当前上下文的模型的一部分。 protected override void Seed (MyContext context) { var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context)); var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context)); // Create Admin Role string roleName = "Admins"; IdentityResult roleResult; // Check to see if Role Exists, if not create it if (!RoleManager.RoleExists(roleName)) { roleResult = RoleManager.Create(new […]

有效的唯一string列表C#

什么是最有效的方式来存储string列表忽略任何重复? 我在想一个字典可能是最好的插入string通过写dict [str] = false; 并通过键列举列举。 这是一个好的解决scheme吗?

没有IUserTokenProvider注册

我最近更新了我的申请表1.0到2.0的Asp.Net Identity Core 。 有一些我想尝试的新function,比如GenerateEmailConfirmationToken等 我正在使用这个项目作为参考。 当用户尝试注册时,在注册的Post方法的执行过程中出现错误 private readonly UserManager<ApplicationUser> _userManager; public ActionResult Register(RegisterViewModel model) { if (ModelState.IsValid) { var ifUserEXists = _userManager.FindByName(model.EmailId); if (ifUserEXists == null) return View(model); var confirmationToken = _userRepository.CreateConfirmationToken();//this is how i'm generating token currently. var result = _userRepository.CreateUser(model,confirmationToken); var user = _userManager.FindByName(model.EmailId); if (result) { var code = _userManager.GenerateEmailConfirmationToken(user.Id);//error here […]

为什么C#编译器允许空的枚举?

我无意中定义了一个今天没有任何价值的枚举。 像这样一个例子: public enum MyConfusingEnum{} 编译器非常高兴让我定义这个代码,并成功地构build了代码。 现在我明显不能用传统意义上的代码, var mySadCompiler = MyConfusingEnum; 没有指定一个值,但有趣的是,我可以说,.. var myRoundTheHousesZeroState = Activator.CreateInstance<MyConfusingEnum>(); 正如我所暗示的MyConfusingEnum ,它是值为0的MyConfusingEnum的值types; 我的问题是为什么编译器允许一个空的定义,并有任何情况下,它可能是有用的?

使用PropertyInfo来查找属性types

我想dynamic地parsing一个对象树来做一些自定义validation。 validation并不重要,但我想更好地理解PropertyInfo类。 我会做这样的事情, public bool ValidateData(object data) { foreach (PropertyInfo propertyInfo in data.GetType().GetProperties()) { if (the property is a string) { string value = propertyInfo.GetValue(data, null); if value is not OK { return false; } } } return true; } 真的,我现在唯一关心的部分是'如果财产是一个string'。 我如何从PropertyInfo对象中找出它是什么types的。 我将不得不处理诸如string,整数,双打等基本的东西。 但是我也必须处理对象,如果需要的话,我需要遍历这些对象内部的对象树来validation其中的基本数据,它们也会有string等。 谢谢。

为什么C编译器不能重新排列结构成员来消除alignment填充?

可能重复: 为什么GCC不优化结构? 为什么C ++不使结构更紧密? 考虑在32位x86机器上的以下示例: 由于alignment约束,下面的结构 struct s1 { char a; int b; char c; char d; char e; } 可以更有效地代表内存(12比8字节),如果成员被重新sorting的话 struct s2 { int b; char a; char c; char d; char e; } 我知道C / C ++编译器不允许这样做。 我的问题是为什么语言是这样devise的。 毕竟,我们最终可能会浪费大量的内存, struct_ref->b引用不会关心这个区别。 编辑 :谢谢大家的非常有用的答案。 你很好地解释了为什么重新安排因为devise语言的方式而不起作用。 但是,这让我想:如果重新安排是语言的一部分,这些论据是否仍然会成立? 假设有一些特定的重排规则,我们至less要求这样做 我们应该只在实际需要时重新组织结构(如果结构已经“紧”,不要做任何事情) 该规则仅查看结构的定义,而不是内部结构。 这确保了一个结构types具有相同的布局,而不pipe它是否在另一个结构中是内部的 给定结构的编译内存布局是可预测的,因为它的定义(即规则是固定的) 我一个接一个地说我的理由: 低级数据映射,“最不可思议的元素” :只要你自己写一个简洁的结构(比如@Perry的答案),没有什么变化(需求1)。 如果出于某种奇怪的原因,您希望内部填充在那里,您可以使用虚拟variables手动插入它,和/或可能有关键字/指令。 […]

什么是SDL渲染器?

我从SDL2开始,在试图了解什么是SDL_Renderer时遇到了一些麻烦。 它是什么? 它有什么作用? SDL_Renderer,SDL_Window,SDL_Surface和SDL_Texture之间有什么区别,以及它们是如何相关的? 在试图理解这个介绍性代码时,我遇到了这个问题: #include <iostream> #include <SDL2/SDL.h> int main() { /* Starting SDL */ if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; } /* Create a Window */ SDL_Window *window = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN); if (window == nullptr) { std::cout << […]

插入地图的首选/惯用方式

我已经确定了插入std::map四种不同的方法: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); 哪一种是首选/惯用的方式? (还有没有想过的另一种方式?)