小编Fre*_*ios的帖子

async/await - 何时返回Task vs void?

在什么情况下会想要使用

public async Task AsyncMethod(int num)
Run Code Online (Sandbox Code Playgroud)

代替

public async void AsyncMethod(int num)
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一情况是,您是否需要能够跟踪其进度的任务.

此外,在以下方法中,async和await关键字是否不必要?

public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Run Code Online (Sandbox Code Playgroud)

c# asynchronous .net-4.5

457
推荐指数
5
解决办法
28万
查看次数

为什么Rust需要明确的生命周期?

我正在阅读Rust书的生命周章,我在这个例子中看到了命名/显式生命周期:

struct Foo<'a> {
    x: &'a i32,
}

fn main() {
    let x;                    // -+ x goes into scope
                              //  |
    {                         //  |
        let y = &5;           // ---+ y goes into scope
        let f = Foo { x: y }; // ---+ f goes into scope
        x = &f.x;             //  | | error here
    }                         // ---+ f and y go out of scope
                              //  |
    println!("{}", x);        //  |
}                             // -+ x goes out …
Run Code Online (Sandbox Code Playgroud)

static-analysis reference lifetime rust

183
推荐指数
7
解决办法
2万
查看次数

内容类型text/xml; 服务不支持charset = utf-8

我有一个WCF服务的问题.我有一个控制台应用程序,我需要在不使用app.config的情况下使用该服务,因此我必须通过代码设置端点等.我有svc的服务引用,但我不能使用app.config.这是我的代码:

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress address = new EndpointAddress("http://localhost:8731/WcfServicio/MiServicio");

MiServicioClient svc = new MiServicioClient(binding, address);
object ob = svc.PaisesObtener();
Run Code Online (Sandbox Code Playgroud)

在我的最后一行,svc.PaisesObtener()我得到错误:

Content Type text/xml; charset=utf-8 was not supported by service
http://localhost:8731/WcfServicio/MiServicio.  The client and service bindings may be mismatched.
Run Code Online (Sandbox Code Playgroud)

wcf endpoint

72
推荐指数
3
解决办法
13万
查看次数

需要关于Rust的细胞和参考计数类型的整体解释

Rust标准库中有几种包装类型:

据我了解,这些是包装器,提供了比简单参考更多的可能性.虽然我理解一些基础知识,但我看不到整体情况.

他们到底做了什么?细胞和参考计数家族是否提供正交或类似的特征?

rust

67
推荐指数
2
解决办法
6207
查看次数

c#中char类型的大小

只是想知道为什么我们char在C#(.NET)中有2字节大小的类型,而不像其他编程语言中的1字节?

.net c# character-encoding

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

如何检查StringBuilder是否为空?

我必须对一个带StringBuilder两个项目的方法进行单元测试,并填写StringBuilder两个项目之间的差异.

在我的第一次测试中,我给它两个相同的项目,所以我想测试它是否StringBuilder为空.

没有IsEmpty方法或财产.

如何轻松检查这个?

c# stringbuilder conditional-statements

34
推荐指数
2
解决办法
3万
查看次数

从结果创建Observable <T>

我正在尝试Angular2.

我注意到http服务使用Observable对象而不是Promise(我不喜欢那个选择.. async/ await正在到达).

在我的服务中,我Plants从webservice 下载了一个列表.单击工厂我使用路由显示详细信息.但是当我回去的时候,再次下载植物(因为再次调用构造函数).

为了避免这种情况,我想做类似的事情:

public getPlants(): Observable<Plants[]>
{   
    if (this._plants != null)
        return Observable.fromResult (this._plants); //This method does not exists 

    return this._http.get('../../res/heroes.json')...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?如何Observable在ts文件中导入该类?

谢谢!

observable rxjs typescript angular

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

如何在Windows 10上为Debian修复Rust错误"链接器'cc'未找到"?

我正在Windows 10上运行Debian(适用于Linux的Windows子系统)并使用以下命令安装Rust:

curl https://sh.rustup.rs -sSf | sh
Run Code Online (Sandbox Code Playgroud)

安装中没有错误,但是当我尝试编译时,rustc我收到了错误linker 'cc' not found.

linux windows rust

27
推荐指数
5
解决办法
6277
查看次数

为newtypes实现Deref被认为是一种不好的做法吗?

我经常使用newtype模式,但我厌倦了写作my_type.0.call_to_whatever(...).我很想实现这个Deref特性,因为它允许编写更简单的代码,因为我可以使用我的newtype,好像它在某些情况下是底层类型,例如:

use std::ops::Deref;

type Underlying = [i32; 256];
struct MyArray(Underlying);

impl Deref for MyArray {
    type Target = Underlying;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

fn main() {
    let my_array = MyArray([0; 256]);

    println!("{}", my_array[0]); // I can use my_array just like a regular array
}
Run Code Online (Sandbox Code Playgroud)

这是一种好的还是坏的做法?为什么?可能是什么缺点?

dereference rust

24
推荐指数
2
解决办法
2542
查看次数

如何从实现Drop trait的结构中移出一个字段?

这是一个无效的Rust程序(Rust版本1.1),其中包含一个执行HTTP客户端请求的函数,只返回标题,删除响应中的所有其他字段.

extern crate hyper;

fn just_the_headers() -> Result<hyper::header::Headers, hyper::error::Error> {
    let c = hyper::client::Client::new();
    let result = c.get("http://www.example.com").send();
    match result {
        Err(e) => Err(e),
        Ok(response) => Ok(response.headers),
    }
}

fn main() {
    println!("{:?}", just_the_headers());
}
Run Code Online (Sandbox Code Playgroud)

以下是编译器错误:

main.rs:8:28: 8:44 error: cannot move out of type `hyper::client::response::Response`, which defines the `Drop` trait
main.rs:8         Ok(response) => Ok(response.headers),
                                 ^~~~~~~~~~~~~~~~
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)

我理解为什么借用检查器不接受这个程序 - 即,该drop函数将response在其headers成员被移动之后使用它.

我的问题是:我怎样才能解决这个问题并且仍然拥有安全的Rust代码?我知道我可以复制,通过clone(),像这样:

Ok(response) => Ok(response.headers.clone()), …
Run Code Online (Sandbox Code Playgroud)

rust

23
推荐指数
1
解决办法
3654
查看次数