using System;
public class Program
{
public static void Main()
{
MyStruct myStruct = new MyStruct(100);
Console.WriteLine("Before Increasing...");
Console.WriteLine($"MyStruct: {myStruct.Number}");
Console.ReadKey();
Increase(myStruct);
Console.WriteLine("\nAfter Increasing...");
Console.WriteLine($"MyStruct: {myStruct.Number}");
}
public static void Increase(MyStruct myStruct)
{
myStruct.Number += 100;
}
}
public struct MyStruct
{
public int Number { get; set; }
public MyStruct(int number)
{
Number = number;
}
}
Вот код. Почему в результате остаётся 100? Если по идее это value тип и значение должно меняться, почему оно не меняется?
Вот именно потому что struct это value тип - он и не меняет значение. Если бы на месте структуры был класс - результат был бы именно таким как вы говорите.
namespace main
{
using System;
public class Program
{
public static void Main()
{
MyClass myClass = new MyClass(100);
MyStruct myStruct = new MyStruct(100);
Console.WriteLine("Before Increasing...");
Console.WriteLine($"MyClass: {myClass.Number}");
Console.WriteLine($"MyStruct: {myStruct.Number}");
Console.ReadKey();
Increase(myClass);
Increase(myStruct);
Console.WriteLine("\nAfter Increasing...");
Console.WriteLine($"MyClass: {myClass.Number}");
Console.WriteLine($"MyStruct: {myStruct.Number}");
}
public static void Increase(MyClass myClass)
{
myClass.Number += 100;
}
public static void Increase(MyStruct myStruct)
{
myStruct.Number += 100;
}
}
public struct MyStruct
{
public int Number { get; set; }
public MyStruct(int number)
{
Number = number;
}
}
public class MyClass
{
public int Number { get; set; }
public MyClass(int number)
{
Number = number;
}
}
}
Вот, прокомпилируйте этот код в доказательство моих слов.