标签: void

for循环中两个逗号分隔语句之间的原因(void)

以下代码来自cppreference.comstd::lexicographical_compare上的实现示例:

template<class InputIt1, class InputIt2>
bool lexicographical_compare(InputIt1 first1, InputIt1 last1,
                             InputIt2 first2, InputIt2 last2)
{
    for ( ; (first1 != last1) && (first2 != last2); ++first1, (void) ++first2 ) {
        if (*first1 < *first2) return true;
        if (*first2 < *first1) return false;
    }
    return (first1 == last1) && (first2 != last2);
}
Run Code Online (Sandbox Code Playgroud)

为什么(void)循环中有一个,没有把它放在那里会有什么后果?

c++ for-loop comma void c++11

15
推荐指数
2
解决办法
830
查看次数

async Task vs async void

这可能是一个非常愚蠢的问题,但我有以下编码行将RAW图像转换为BitmapImages:

public async void CreateImageThumbnails(string imagePath, int imgId)
{
    await Task.Run(() => controlCollection.Where(x => x.ImageId == imgId).FirstOrDefault().ImageSource = ThumbnailCreator.CreateThumbnail(imagePath));
}
Run Code Online (Sandbox Code Playgroud)

它调用这种方法 CreateThumbnail()

public static BitmapImage CreateThumbnail(string imagePath)
{
    var bitmap = new BitmapImage();

    using (var stream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
    {
        bitmap.BeginInit();
        bitmap.DecodePixelWidth = 283;
        bitmap.CacheOption = BitmapCacheOption.OnLoad;
        bitmap.StreamSource = stream;
        bitmap.EndInit();
    }

    bitmap.Freeze();

    GC.WaitForPendingFinalizers();
    GC.Collect();

    return bitmap;
}
Run Code Online (Sandbox Code Playgroud)

当使用async Void而不是async Task在我的CreateImageThumbnails方法中时,我的应用程序处理图像(其中29个)比快11秒async Task.为什么会这样?

异步无效 异步无效

异步任务 异步任务

内存使用更加使用void,但操作完成快.我对线程知之甚少,这就是我提出这个问题的原因.有人可以解释为什么会这样吗?

我还做了一些关于什么时候和什么时候不使用的研究 …

c# task void async-await

15
推荐指数
1
解决办法
5396
查看次数

如何用玩笑测试 void 异步函数是否成功?

你如何简洁地测试一个 void 异步函数是否用 jest 成功执行?我正在使用打字稿。

// foo.ts
export class Foo {
  public async bar(): Promise<void> {
    await someAsync();
  }
}
Run Code Online (Sandbox Code Playgroud)

如何测试new Foo().bar()不抛出错误?

void promise typescript jestjs

15
推荐指数
2
解决办法
1万
查看次数

返回布尔值而不是在Java中声明void类型?

关于在方法签名中返回布尔值以指示成功操作而不是声明void,是否有任何硬性规则和快速规则?我发现,对于我的调用方法中的更关键操作,我想知道操作是否已完成,因此我可以记录任何问题.这是布尔的"不恰当"使用吗?

java boolean void

14
推荐指数
2
解决办法
6022
查看次数

在.NET中是否有"Void"结构的实际用法

只是好奇,是否有"虚空" 结构的实际用途

除了反思?

.net c# void

14
推荐指数
1
解决办法
886
查看次数

为什么不能在C++中创建void类型的对象?

C++不允许创建类型的对象void.这是为什么?

c++ types void

14
推荐指数
2
解决办法
2052
查看次数

如果void()没有返回值,我们为什么要使用它?

void f()意味着f什么都不返回.如果void什么都不返回,那我们为什么要使用呢?主要目的是void什么?

c++ types void

14
推荐指数
4
解决办法
4万
查看次数

void类型的变量

所以我知道这Void用于表示函数不接受或返回值.在Swift中,Void实际上是空元组的类型别名().

有趣的是(在Beta 6中),您甚至可以声明类型的变量Void:

var x: Void
println(x)
x = test()

func test() {}
Run Code Online (Sandbox Code Playgroud)

这些陈述都是合法的.该println()打印"()".

到目前为止,我无法弄清楚这可以用于什么.为什么你需要一个不能保存任何值的变量?有没有人知道这方面的实际用途,还是这只是Swift的一个怪癖?

types void swift

14
推荐指数
2
解决办法
5197
查看次数

为什么C++中的void方法可以返回void值,但在其他语言中它不能?

该程序在C++中编译和运行,但不是Java和C#等多种语言.

#include <iostream>
using namespace std;

void foo2() {
  cout << "foo 2.\n";
}

void foo() {
    return foo2();
}

int main() {

    foo();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Java中,这给出了编译器错误,如'Void方法无法返回值'.但由于被调用的方法本身就是一个void,因此它不返回值.我知道为了便于阅读,可能会禁止这样的结构.还有其他异议吗?

编辑:为了将来的参考,我在这里发现了一些类似的问题return-void-type-in​​-c-and-c 我个人认为这个问题还没有回答.回复'因为它在规范中这样说,继续'不会削减它,因为有人必须首先编写规范.也许我应该问'允许返回像C++这样的void类型有什么优缺点'?

c# c++ java void

14
推荐指数
1
解决办法
595
查看次数

std :: declval <void>()是一个有效的表达式吗?

据我所知,我不能声明一个右值引用void.
例如,以下代码格式错误:

 void f(void &&v) { }
Run Code Online (Sandbox Code Playgroud)

[20.2.6/1](函数模板declval)我们得到一个声明declval:

template <class T>
add_rvalue_reference_t<T>
declval() noexcept;
Run Code Online (Sandbox Code Playgroud)

因此,declval<void>(让我说)会导致void &&,我猜这是病态的,以及前面的示例所示.

无论如何,以下最小的工作示例编译:

#include<utility>

int main() {
    decltype(std::declval<void>())* ptr = nullptr;
}
Run Code Online (Sandbox Code Playgroud)

请注意,以下情况也是如此:

static_assert(std::is_same<decltype(std::declval<void>()), void>::value, "!");
Run Code Online (Sandbox Code Playgroud)

void&&原以为它会如前所述(或者更好,我期待它无法编译).
实际上,它恰好是任何其他非引用类型的右值引用.
举个例子:

static_assert(std::is_same<decltype(std::declval<int>()), int&&>::value, "!");
Run Code Online (Sandbox Code Playgroud)

是否declval<void>有效表达?上面的代码是否合法?
为什么行为void不同于任何其他类型?(如果代码是合法的,那么它就不会起作用,否则可能是一个答案).

如果它是合法的,标准允许哪些?我找不到案子了.
当然,标准说:

declval的模板参数T可以是不完整类型.

无论如何,这里它会导致一个不可接受的类型(void&&),并且它会绕着它丢弃右值引用.

c++ void decltype language-lawyer c++11

14
推荐指数
1
解决办法
410
查看次数

标签 统计

void ×10

c++ ×5

c# ×3

types ×3

c++11 ×2

java ×2

.net ×1

async-await ×1

boolean ×1

comma ×1

decltype ×1

for-loop ×1

jestjs ×1

language-lawyer ×1

promise ×1

swift ×1

task ×1

typescript ×1