Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Коректний Доступ до Полів у Методах Структур | Section
C# Понад Базовий Рівень

bookКоректний Доступ до Полів у Методах Структур

Свайпніть щоб показати меню

До цього моменту ви створювали методи, передавали в них дані та використовували їх без проблем, але розгляньте приклад, коли ім'я параметра методу збігається з ім'ям поля всередині структури:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829
using System; struct Coordinate { public int x; public int y; public void setValue(int x, int y) { x = x; y = y; } public void displayValue() { Console.WriteLine($"({x}, {y})"); } } class ConsoleApp { static void Main(string[] args) { Coordinate coord = new Coordinate(); coord.setValue(5, 7); coord.displayValue(); } }

Компилятор не показує жодної помилки у цьому випадку, однак програма є логічно некоректною, оскільки результат виконання програми показує (0, 0), навіть якщо ви викликали setValue(5, 7).

Це відбувається тому, що вираз x = x є дуже неоднозначним, оскільки і параметр методу, і поле структури мають ім'я x. З точки зору компілятора, у виразі x = x параметр методу x присвоює значення x самому собі ще раз, що логічно є нульовою операцією і нічого не змінює.

Щоб виправити це, використовуйте ключове слово this. Ключове слово this вказує компілятору, що ви звертаєтесь саме до поля структури.

Синтаксис такий: this.fieldName. Виправлений код виглядатиме так:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829
using System; struct Coordinate { public int x; public int y; public void setValue(int x, int y) { this.x = x; this.y = y; } public void displayValue() { Console.WriteLine($"({x}, {y})"); } } class ConsoleApp { static void Main(string[] args) { Coordinate coord = new Coordinate(); coord.setValue(5, 7); coord.displayValue(); } }

Тепер компілятор знає, що у виразі x = x ліва частина x — це поле структури, а права частина xпараметр методу, тому цього разу поле успішно оновлюється.

Ключове слово this використовується для вирішення будь-якої неоднозначності у коді. Загалом, рекомендується завжди використовувати ключове слово this при доступі до полів у методах структур.

question mark

Яке ключове слово використовується для усунення неоднозначності при зверненні до полів у методах класу?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 16

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 16
some-alt