TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# return Keyword

Understand the return keyword. A method return statement is void or has a value.
Return. A pebble can be thrown into the air—but it does not travel up forever. It falls to the earth. It returns. In C# our methods too have returns.
In programs, methods return only one value. A return statement is a jump statement. It transfers control unconditionally to the end point of the call site in the stack frame.Keywords
An example. As a jump statement, return affects control flow. Control flow models the path of the execution engine when it manipulates evaluation stacks in methods.

Info: Whenever an argument to a method is encountered, a token is pushed onto the stack and the new method is invoked.

Steps: In the called method, 3 kinds of memory are allocated: the parameter slots, the local variable slots, and the evaluation stack.

MethodA: This method loads the constant 100 and returns that value to the call site. MethodA is small so it is often inlined.

const

MethodB: This accepts a parameter of type boolean. The logic contained in the method is not returned, just the value of the evaluation.

Ternary Operator

MethodC: The integer resulting from the expression is placed on the stack and this single 4-byte value is copied to the call site.

C# program that uses return statement using System; class Program { static void Main() { // Call four methods and store their return values. int value1 = MethodA(); string value2 = MethodB(true); string value3 = MethodB(false); int value4 = MethodC(5, 2); // Display the results. Console.WriteLine(value1); Console.WriteLine(value2); Console.WriteLine(value3); Console.WriteLine(value4); // Invoke a void method. MethodD(); } static int MethodA() { // This method returns a constant integer. return 100; } static string MethodB(bool flag) { // This method returns a string reference based on the flag. return flag ? "cat" : "dog"; } static int MethodC(int operand1, int operand2) { // This method returns an integer based on an expression. return (operand1 * 10) + operand2; } static void MethodD() { // This method uses a return statement with no expression (void). Console.WriteLine("MethodD executed"); return; } } Output 100 cat dog 52 MethodD executed
Expression-bodied methods. Some methods that return values do not use a return statement. The C# language supports expression-bodied methods.

Tip: These methods are written more like lambda expressions. We use the lambda operator, and no "return" keyword is specified.

Instead: The result of the expression is treated as a return value. So an invisible "return" is assumed by the C# compiler.

C# program that uses expression-bodied method using System; class Program { // An expression-bodied method. static string FormatFancy(string name) => ("Name: " + name.ToUpper()); static void Main(string[] args) { // Call the FormatFancy method. string result = FormatFancy("sam"); Console.WriteLine(result); } } Output Name: SAM
Nested local function. A function can be declared as a local function. It has access to the locals within the enclosing scope—it can read and write to them.

Here: We introduce a local function called CreateString. It changes the value of "multiplier" on each call.

And: The CreateString method returns a string created with string interpolation syntax.

String Interpolation

Warning: This syntax form may be useful, but often a top-level method in a class is more standard and will be easier for others to use.

C# program that uses nested local function using System; class Program { static void Main() { int multiplier = 10; // This is a local function. // ... It can access and change local variables in the surrounding scope. string CreateString(int value) { // Use string interpolation. // ... Modify multiplier after accessing its value. return $"STRING HAS VALUE: {value * multiplier++}"; } // Call the local function. Console.WriteLine(CreateString(5)); Console.WriteLine(CreateString(5)); } } Output STRING HAS VALUE: 50 STRING HAS VALUE: 55
Void. This keyword specifies that no specific value is returned from a method. You must use "void" in the method signature. This word was inherited from older C-like languages.Void
Expressions. You could specify if-statements to compute return values, but this approach is more verbose. Expressions can instead be used to condense high-level code.
Other returns. Many programs return string references of either constant form or newly-constructed strings. String is a reference type in the language that is special-cased by the runtime.Return ArrayReturn BoolReturn Multiple Values

Tip: Like all reference types, the string type is pushed to the stack and it is only 4 or 8 bytes on computers.

String: The string data is never copied when you assign a variable to the result of the method that returns a string.

Ret. This is the IL return instruction. Ret can be executed when there is one or zero items in the evaluation stack. The evaluation stack contains varying types of elements.IL: ret

Note: If the method returns one value, the evaluation stack should have one value of that type when the ret instruction is executed.

And: If the method returns void, the evaluation stack can be empty. Serge Lidin's "Expert .NET 2.0 IL Assembler" describes these things.

Ref return. We can return a ref to a struct or array element. This allows the returned value to be modified in a single statement. These changes are reflected in the current scope.Ref Return
A summary. It is common to return values in methods. We discussed the concepts of reachability and end points, and how the execution engine processes ret instructions.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf