Для каждого вхождения данного идентификатора в качестве простого_имени в выражении или деклараторе внутри области объявления локальных переменных, непосредственно включающей это вхождение, каждое вхождение того же самого идентификатора в качестве простого_имени в выражении или декларатора должно ссылаться на одну и ту же сущность. Это правило позволяет гарантировать, что внутри определенного блока, блока switch, а также операторов for, foreach и using имя всегда имеет одинаковое значение.
Правило инвариантности значения применяется только к простым именам. Один идентификатор вполне может иметь одно значение в виде простого имени и другое значение в виде правого операнда в методе доступа к члену. Например:
using System;
namespace ConsoleApplication7
{
struct Point
{
int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public override string ToString()
{
return String.Format("{0} {1}", x, y);
}
}
class Program
{
static void Main(string[] args)
{
Point p = new Point(3, 5);
Console.WriteLine(p);
}
}
}
В примере простые имена x и y относятся к параметрам, но это не мешает выражениям доступа к членам this.x и this.y иметь доступ к полям.
Выражение_со_скобками состоит из выражения, заключенного в скобки.
выражение_в_скобках: ( выражение )
Выражение_со_скобками вычисляется путем вычисления выражения внутри скобок.
Оператор "точка" используется для доступа к членам.