Я начал учиться C# только для того, чтобы быть продуктивным, не выходя из дома ( Пожалуйста, оставайтесь дома столько, сколько сможете, если находитесь в опасном регионе ).
У меня простой вопрос. Я знаю, что объект класса должен быть инициализирован первым, чтобы использовать этот (non-stati c) класс в C#.
Итак (я думаю) этот фрагмент кода делает это:
namespace ConsoleApp10
{
class Program
{
public class Person
{
public string Name;
public void Introduce0()
{
Console.WriteLine("My name is " + Name + ".");
}
}
static void Main(string[] args)
{
var person0 = new Person();
person0.Name = "Marry";
person0.Introduce0();
Console.ReadKey();
}
}
}
И результат: Меня зовут Женя. Затем я попытался сделать то же самое с помощью метода stati c:
namespace ConsoleApp10
{
class Program
{
public class Person
{
public string Name;
public void Introduce0()
{
Console.WriteLine("My name is " + Name + ".");
}
public static Person Introduce1(string str0)
{
var temp0 = new Person();
temp0.Name = str0;
temp0.Introduce0();
return temp0;
}
}
static void Main(string[] args)
{
var person0 = Person.Introduce1("Marry");
Console.ReadKey();
}
}
}
И результат, как и ожидалось, тот же: Меня зовут Женя. И затем я добавил два куска кода в мой Main метод:
static void Main(string[] args)
{
var person0 = Person.Introduce1("Marry");
person0.Name = "Sarah";
person0.Introduce0();
Console.ReadKey();
}
И результат: Меня зовут Женя. Меня зовут Сара. Итак, вот мои вопросы: В последнем примере, почему мне не нужно инициализировать объект Person для доступа к полю Name и методу Introduce0 ? Доступ к методу stati c означает автоматическую инициализацию? Или это потому, что метод Introduce1 содержит инициализацию объекта Person ( temp0 )? Заранее спасибо и будьте в безопасности.