Csharp/CSharp Tutorial/struct/struct parameter — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 15:17, 26 мая 2010
struct objects have the same pass by value semantics as simple intrinsics
<source lang="csharp">using System; class Class1 {
public static void Main(string[] args) { int i = 0; Console.WriteLine("Initial value of i = {0}", i); fn_int(i); Console.WriteLine("i after fn_int() = {0}", i); fn_Int32(i); Console.WriteLine("i after fn_Int32 = {0}", i); Console.WriteLine(); Int32 i32 = 1; Console.WriteLine("Initial value of i32 = {0}", i32); fn_int(i32); Console.WriteLine("i32 after fn_int() = {0}", i32); fn_Int32(i32); Console.WriteLine("i32 after fn_Int32 = {0}", i32); } public static void fn_Int32(Int32 k) { k = 10; }
public static void fn_int(int k) { k = 20; }
}</source>
Use ref for a struct parameter
<source lang="csharp">using System; public struct MyStruct {
public int val;
} public class MainClass {
static void Main() { MyStruct myValue = new MyStruct(); myValue.val = 10; PassByValue( myValue ); Console.WriteLine( "Result of PassByValue: myValue.val = {0}", myValue.val ); PassByRef( ref myValue ); Console.WriteLine( "Result of PassByRef: myValue.val = {0}", myValue.val ); } static void PassByValue( MyStruct myValue ) { myValue.val = 50; } static void PassByRef( ref MyStruct myValue ) { myValue.val = 42; }
}</source>
Result of PassByValue: myValue.val = 10 Result of PassByRef: myValue.val = 42