我很好奇,如果有一个合法的原因,为什么C#不支持调用void方法作为返回语句的一部分,当调用方法的返回types也是void。 public void MethodA() { return; } public void MethodB() { return MethodA(); } 所以我们通常会看到这个: public void MethodMeh() { if (expression) { MethodA(); return; } // Do more stuff } …当我们可以用这个代替时: public void MethodAwesome() { if (expression) return MethodA(); // Do more stuff } 这是由于C#如何处理无效的语言限制吗?
可能重复: 在现代的C和C ++中已经弃用了f(void) 好的,所以我在这个问题上听到了不同的意见,只是想确保我理解正确。 对于C ++ 声明void f(); 和void f(void); 意思完全一样,函数f不带任何参数。 同上定义。 对于C. 声明void f(void); 意味着f不采取任何参数。 声明void f(); 意味着函数f可能有也可能没有参数,如果有的话,我们不知道它们是什么样的参数,或者它们有多less。 请注意,它与省略号不一样,我们不能使用va_list 。 现在,这是事情变得有趣的地方。 情况1 宣言: void f(); 定义: void f(int a, int b, float c) { //… } 案例2 宣言: void f(); 定义: void f() { //… } 题: 在第一种情况和第二种情况下,我们在正确的论点,错误的论据和没有论据的情况下调用f ,会发生什么? 运行时会发生什么? 附加问题: 如果我用参数来声明f ,但是如果没有它们来定义它,它会有所作为吗? 我应该能够解决来自函数体的争论吗?
我不知道指定单元作为我的Scala方法的返回types或完全舍弃返回types之间的区别是什么。 有什么不同? 任何人都可以请指教?
在C编程语言中是void的数据types? 如果是这样,它可以存储什么types的值? 如果我们有int , float , char等来存储值,为什么需要void ?
从函数返回哪个更正确的方法: void function() { // blah some code } 要么 void function() { // blah some code return; } 第二种方式的理由: 它更清楚地expression了开发者的意图。 它有助于在预编译时检测函数结束: 假设你有这样的场景 – 你有一堆function,你必须在这些function的末尾注入一些代码。 但由于某些原因,您不希望或不能修改如此巨大的function。 你能做些什么呢? Return和macro进入,例如: #include<stdio.h> #define MAX_LINES 1000 #define XCAT(a,b) a##b #define CAT(a,b) XCAT(a,b) #define return returns[__LINE__] = 1;\ if (returns[__LINE__])\ {printf("End of function on %d line.\n",__LINE__);}\ int CAT(tmp,__LINE__); \ if […]
从[5.3.3 / 1]中我发现: sizeof运算符不能应用于具有函数或不完整types的expression式 从[3.9 / 5]我发现: 不完全定义的对象types和cv void是不完整的types 无论如何, sizeof不评估它的操作数,我会说sizeof(void())是一个合法的expression式(实际上GCC编译它,结果是1)。 另一方面,从这里开始 ,在讨论sizeof ,没有提到void , 在提到size 1的types时,也没有提到具有实现定义大小的types的列表。 问题是: sizeof(void())是一个合法的expression式吗? 它保证有大小等于1? 或者这是一个导致UB的法律expression,这就是全部?
我正在为Apache HttpClient包实现ResponseHandler ,如下所示: new ResponseHandler<int>() { public int handleResponse(…) { // … code … return 0; } } 但我想为handleResponse函数返回什么,即void 。 这可能吗? 以下不编译,因为void不是一个有效的Javatypes: new ResponseHandler<void>() { public void handleResponse(…) { // … code … } } 我想我可以用voidreplacevoid来返回一个Void对象,但是这不是我想要的。 问 :是否有可能组织这种callback情况,使我可以返回void handleResponse ?
显然,可以声明一个返回const void的函数: const void foo() { } g ++似乎认为const重要的,因为下面的代码不能编译: #include <type_traits> static_assert(std::is_same<void(), const void()>::value, "const matters"); 那么const void是否有什么实际意义呢?
void run() { … if (done) return cancel(); … } 在那里cancel()返回void 。 这不会编译…我几乎可以理解为什么。 但是如果我想从虚空中回归一个虚空,为什么不呢? 相反,我最终写了这样的东西: if (done) { cancel(); return; } 我不是在寻找代码风格的build议,我想知道为什么Java明确禁止这种types的无效返回。 任何信息表示赞赏,谢谢。
我有一个方法返回类是我想要testing的类的依赖类的无效。 这个类是巨大的,我只用它从这个单一的方法。 我需要replacetesting的这个方法的实现,因为我希望它做一些不同的事情,我需要能够访问这个方法接收的参数。 我无法在EasyMock中find这种方法。 我想我知道如何使用doAnswer来处理doAnswer但除非绝对必要,否则我不想添加其他库。