Tag: C#的

有可能有一个委托作为属性参数?

是否有可能有委托作为参数的参数? 喜欢这个: public delegate IPropertySet ConnectionPropertiesDelegate(); public static class TestDelegate { public static IPropertySet GetConnection() { return new PropertySetClass(); } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface,AllowMultiple=false,Inherited=true)] public class WorkspaceAttribute : Attribute { public ConnectionPropertiesDelegate ConnectionDelegate { get; set; } public WorkspaceAttribute(ConnectionPropertiesDelegate connectionDelegate) { ConnectionDelegate = connectionDelegate; } } [Workspace(TestDelegate.GetConnection)] public class Test { } 如果不可能,那么明智的select是什么?

有关在CMake / CDash中使用gcov的详细指南?

我正在使用CMake和我的项目,并build立一个连续/夜间build设的cdash服务器。 一切正常,通过设置一个crontab,我们每小时/每晚的构build/testing结果自动上传到我们的cdash服务器。 我的下一步是将testing覆盖率报告添加到构build。 我在这里find这个文档http://www.cmake.org/Wiki/CTest:Coverage,但坦率地说,这有点远离实用指南。 目前我已经添加了所需的标志(而不是-fprofile-arcs -ftest-coverage ,我发现–coverage更好),编译过程生成.gcno文件。 但后来我卡住了。 命令 make NightlyCoverage 似乎没有做任何事情。 有谁能告诉我下一步该做什么? 我想要的结果就是在做make NightlyCoverage ,覆盖报告生成并上传到cdash服务器。

用C ++ 17可以检测一个结构体/类是否有任何基数?

我需要一个types特征,如果给定的types是从任何东西派生的,那么这个特征将是真的,否则就是假的。 例如: template<class T> struct is_inherit //… logic of inheritance detection ; template<class T> void AppLogic(){ if constexpr(is_inherit<T>::value) { puts("T has base"); //… } else { puts("T doesn't have base"); //… } } struct A {}; struct C {}; struct B: C {}; int main() { AppLogic<A>(); // print: T doesn't have base AppLogic<B>(); // […]

编译器是否只编译可以执行的代码?

我有一个类库,只使用它的一部分。 是否需要删除未使用的内容以缩小创build的代码的大小(在发布configuration中)? 据我所见,编译器负责处理,删除代码不会改变EXE文件的大小。 这将永远是真的吗? 删除所有不需要的代码将花费很长时间,所以我想知道是否需要这个。 更多信息:类库中有些方法和类不从执行代码中调用,而是由类库中的其他代码部分引用(本身不会被调用)。

“你确定吗?”提示。 ViewModel的一部分还是纯粹的视图?

我一直在玩弄“你确定吗? 在我的MVVM WPF应用程序中键入提示。 我倾向于认为这些纯粹是观点的一部分。 如果ViewModel暴露了一个DeleteCommand ,那么我希望这个命令立即删除。 要将这样的提示集成到ViewModel中,必须公开一个单独的RequestDeleteCommand ,一个用于绑定提示的DeletePromptItem属性,还可以将其作为触发器来显示提示。 即使这样,也没有任何东西停止直接调用DeleteCommand的unit testing,除非在ViewModel中放置特定的逻辑来要求DeletePromptItem将作为参数提供的项目与DeleteCommand相匹配。 但是,这一切似乎像ViewModel对我来说是噪音。 提示是更多的用户界面问题,以防止错误等。对我来说,这表明它应该在视图中确认提示调用DeleteCommand。 有什么想法吗?

为什么C ++要求这个复杂只能被实例化为float,double或long double?

根据C ++ ISO规范§26.2/ 2: 实例化除float , double或long double之外的任何types的模板complex的效果是未指定的。 标准作者为什么要明确添加这个限制? 这使得它没有被指定,例如,如果你使complex<int>或者一个complex<MyCustomFixedPointType>看起来像是一个人为的限制,会发生什么。 有这个限制的原因吗? 如果你想用你自己的自定义types来实例化complex ,是否有解决方法? 由于这个早先的问题 ,我主要提出这个问题,在这个问题中,OP被混淆为什么abs为complex<int>提供了奇怪的输出。 也就是说,由于我们也可能希望从定点types,更高精度的实数等中做出complex ,所以这仍然不太合理。

用Dapper获取UTC时间作为UTC

我正在使用Dapper将我的实体映射到SQL Server CE。 如果我用Kind=Utc保存DateTime ,当我读到它时,我得到了Kind=Unspecified的DateTime ,这会导致所有types的问题。 例: var f = new Foo { Id = 42, ModificationDate = DateTime.UtcNow }; Console.WriteLine("{0} ({1})", f.ModificationDate, f.ModificationDate.Kind); connection.Execute("insert into Foo(Id, ModificationDate) values(@Id, @ModificationDate)", f); var f2 = connection.Query<Foo>("select * from Foo where Id = @Id", f).Single(); Console.WriteLine("{0} ({1})", f2.ModificationDate, f2.ModificationDate.Kind); 这段代码给出了以下输出: 20/09/2012 10:04:16 (Utc) 20/09/2012 10:04:16 (Unspecified) 我知道我应该使用DateTimeOffset […]

OnAction执行和OnResult执行的区别

OnActionExecuted和OnResultExecuting之间有什么区别? 一旦行动已经被处理,或者在这两种方法之间发生了什么事情,他们是否会一个接一个地被解雇? 就像View Engine的初始化一样,…

为什么rand()%7总是返回0?

这似乎是一个很奇怪的问题: 这是我的代码: #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { srand((unsigned int)time(NULL)); int newRandomNumber = 0; newRandomNumber = rand() % 7; NSLog(@"%d", rand() % 7); //This prints out what I expected NSLog(@"newRandomNumber = %d", newRandomNumber); // This always prints out 0! } return 0; } 如果我replace那一行说 newRandomNumber = rand() % […]

为什么代表参考types?

关于接受答案的快速注解 :我不同意Jeffrey答案的一小部分,即由于Delegate必须是参考types,因此所有代表都是参考types。 (事实上​​,多级inheritance链排除了值types是不正确的,例如,所有枚举types都从System.Enuminheritance,而System.Enuminheritance自inheritance自System.Object System.ValueType , 所有引用)然而,我认为从根本上说,所有代表实际上不仅仅inheritance自Delegate而且来自MulticastDelegate是这里的关键实现。 正如Raymond在他的回答中指出的那样 ,一旦你承诺支持多个订阅者,那么考虑到在某个地方需要一个数组,对于委托本身不使用引用types是毫无意义的。 查看底部的更新。 我一直觉得奇怪,如果我这样做: Action foo = obj.Foo; 我每次都创build一个新的 Action对象。 我相信这个代价是微不足道的,但是它涉及内存的分配,以便以后被垃圾收集。 鉴于代表本质上是不变的,我想知道他们为什么不能成为价值types? 那么像上面那样的一行代码只会产生一个简单的分配给堆栈上的内存地址*。 即使考虑匿名function,似乎(对我 )这将工作。 考虑下面的简单例子。 Action foo = () => { obj.Foo(); }; 在这种情况下, foo确实构成closures ,是的。 在很多情况下,我想这确实需要一个实际的引用types(例如当局部variables被closures并在闭包中被修改时)。 但在某些情况下,它不应该。 例如,在上面的例子中,似乎支持封闭的types可能是这样的: 我收回了我原来的观点。 下面的确需要成为一个引用types(或者: 不需要 ,但是如果它是一个struct它将会被装箱)。 所以,忽略下面的代码示例。 我留下它只提供回答的上下文特别提到它。 struct CompilerGenerated { Obj obj; public CompilerGenerated(Obj obj) { this.obj = obj; } […]