有没有办法确保将c#方法返回的值分配给变量?

有没有办法确保将c#方法返回的值分配给变量?,c#,compiler-errors,return-value,C#,Compiler Errors,Return Value,我正在编写调用第三方web API的代码。web响应很重要,因为它包含是否插入记录的详细信息。API返回表示已创建对象的JSON。其他插入需要返回的ID,例如,在插入员工之前,地址的ID是外键。如果返回值不保留以供以后使用,则很难跟踪插入的地址 是否可以注释或以其他方式编写方法,以便必须指定返回值?这意味着在没有指定其他变量的情况下无法调用该方法,因此您不会意外地丢失响应 e、 g 如果没有分配,我希望编译器失败 //this is ok string result = InsertRecord

我正在编写调用第三方web API的代码。web响应很重要,因为它包含是否插入记录的详细信息。API返回表示已创建对象的JSON。其他插入需要返回的ID,例如,在插入员工之前,地址的ID是外键。如果返回值不保留以供以后使用,则很难跟踪插入的地址

是否可以注释或以其他方式编写方法,以便必须指定返回值?这意味着在没有指定其他变量的情况下无法调用该方法,因此您不会意外地丢失响应

e、 g

如果没有分配,我希望编译器失败

//this is ok
string result = InsertRecord(json);

//valid under normal circumstances
InsertRecord(json); //but should give a compiler error because result is not assigned.

不,不能强制指定返回值

//this is ok
string result = InsertRecord(json);

//valid under normal circumstances
InsertRecord(json); //but should give a compiler error because result is not assigned.
但是,您可以将返回值移动到
out
参数,这样调用方就必须声明一个变量:

public void InsertRecord(string json, out string result)
{
    result = "{json representing result}";
}
现在打电话的人必须说:

InsertRecord(json, out var result);
但是,您无法使用discard变量
\uu
来阻止调用者忽略结果:

InsertRecord(json, out var _);

为什么?如果返回的信息对以后的使用很重要,那么编写代码的人将发现并存储它。我不确定由编译器强制执行这一点(目前无法想出一种方法)是否有用或是一个好主意。不要这样做。时期“其他插入需要返回ID”-通常的程序员会找到答案。您不必强制执行任何内容。@在这两者之间,我认为这有助于防止用户用垃圾填充第三方数据库。例如,插入没有员工的地址。不幸的是,一旦地址被创建,第三方API就很难搜索地址,即您必须知道插入记录的ID。我不能阻止用户只插入地址,但如果他们看起来做得不对,我可以采取某种方式使代码发出警告或出错。这很有帮助,但可以与Resharper建议结合使用。这样做的目的是该方法有外部副作用(将记录插入数据库),我想尝试鼓励正确使用,而不假设人们从头到尾都在阅读文档。@sbmobile-当然,但是如果有人不使用Resharper,依赖Resharper将不会有帮助。