强制函数返回值并使编译错误C#

时间:2014-11-10 21:09:31

标签: c# .net

我在该类中有一个类和一个方法。但是这个类方法返回一个字符串。当我调用类方法时,我没有得到错误,尽管我没有捕获字符串值返回。有没有办法可以让C#和.net强制我在返回值时捕获值。 这是我的意思的一个例子。

1-创建一个班级考试。

class test
    {

        public string mystring() {

            return "BLAH";

        }
    }

2-从程序或其他类中调用类方法

test mystring = new test();
mystring.mystring();

我在Visual Studio工作时的编译器并没有抱怨我没有捕获返回值。 这是正常的还是我错过了什么。我可以强制编译器通知我该函数返回一个值但是我没有捕获它吗?

提前感谢您提出的任何建议。

4 个答案:

答案 0 :(得分:7)

您可以将其转换为属性而不是方法:

  public string myString
  {
    get
    {
      return "Blah";
    }
  }

如果您只是调用该属性,则无法编译:

myString.myString; //Results in "Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement" Error

答案 1 :(得分:1)

总之,没有。这不是武力。

不捕获返回值是司空见惯的。核心库中的示例比比皆是(例如,向Hashset<T>添加元素,该函数实际返回bool以标记它是否实际添加或是否已存在 - 取决于我可能或可能的个别实现不关心那个。)

当然,你每次都可以做string str = MyFunction()这样的事情,然后永远不要使用str,但我想你可能已经知道了。

答案 2 :(得分:1)

您可以尝试通过右键单击解决方案资源管理器中的项目,单击“属性”,转到“构建”选项卡并将将警告视为错误设置为all来将警告设置为错误。这将强制您在构建之前解决所有警告,并将捕获某些您未分配的此方案。

编译器不能知道你的方法的唯一目的是返回字符串,或者它是否做了一些影响状态的工作,因此当你不将结果分配给任何东西时它不会抱怨。

但是,根据MikeH的回答,您可以将其设置为get get property。当你没有把它分配给任何东西时,这会抱怨。

答案 3 :(得分:0)

如果你的函数有副作用,那么你应该创建未使用的变量并捕获值。编译器发布选项会删除此变量。

但如果您在功能上没有副作用:您可以使用Visual Studio工具,例如“Watch window”和“Immediate window”