Разница между get_Offset и Offset?

Я не понимаю разницу между get_Offset а также Offset:

MSDN в состояниях NamedRange.get_Offset

Этот API поддерживает инфраструктуру Visual Studio и не предназначен для использования непосредственно из вашего кода. Используйте свойство Offset вместо этого метода.

Что именно это значит? Подобное также сказано для метода get_Value, который широко используется непосредственно в коде.

Возьмите следующие примеры, которые сделали бы то же самое для меня.

myRange.get_Offset(1,0).Value = "Foo";
myRange.Offset[1,0].Value = "Foo";

В чем их разница?

3 ответа

Решение
get_Something 

является внутренней функцией, которая генерируется CLR для свойства get сбруя.

Например, если у вас есть свойство

public string Name {get;set;}

после компиляции вы найдете

get_Name а также set_Name методы, потому что свойства - не что иное, как простые обертки над концепцией set-variable/get-variable в одной области классов.

Будучи внутренним методом, не рекомендуется использовать его, лучше использовать определенный пользователем property доступ.

get_Offset теоретически может быть изменен или удален без предупреждения. Если в документации сказано использовать другой эквивалентный метод, вы должны сделать именно это. get_Value помечен таким образом только для Visual Studio 2005, так что вы можете использовать его свободно

Разница именно в том, что сказано в документации. Вы должны использовать Offset собственность, а не get_Offset метод.

Метод просто публичный, потому что им нужно, чтобы он был доступен таким образом для какого-то другого класса. Этот метод может просто исчезнуть в любой будущей версии, если они найдут лучший способ использования класса, и он даже не будет упомянут как серьезное изменение, поскольку в документации четко указано, что вы не должны его использовать.

Другие вопросы по тегам