Я только что натолкнулся на странную проблему с параметрами метода в C#, и мне было интересно, если кто-нибудь мог бы пролить свет на то, почему это происходит, или это ошибка.
Мой код, по сути, такой :
void MyMethod(SqlHelper db, int myInt)
{
try
{
using (db)
{
var bar = OtherMethod(myInt);
В последней строке myInt выдает ошибку: «Невозможно использовать локальную переменную« myInt »до ее объявления»
Это не вызывает ошибку:
void MyMethod(SqlHelper db, int myInt)
{
try
{
var foo = myInt;
using (db)
{
И мой обходной путь сейчас:
void MyMethod(SqlHelper db, int myInt)
{
var foo = myInt;
try
{
using (db)
{
var bar = OtherMethod(foo);
Но почему это происходит? Как myInt выходит за рамки использования оператора ?? Я чувствую личную атаку.
Мой проект находится в стадии разработки. Net Framework 4.7.
РЕДАКТИРОВАТЬ: Я не могу воспроизвести это в уменьшенной версии, которую я представил , Я сделаю больше исследований. Спасибо всем, кто помог.
РЕДАКТИРОВАТЬ 2: Как все заметили, я пропустил слишком много информации, и ошибка не могла быть воспроизведена. Я нашел проблему и оставлю ее здесь, потому что я тупой и, возможно, это кому-то поможет. Соответствующий код был таким:
void MyMethod(SqlHelper db, int myInt)
{
try
{
using (db = new SqlHelper())
{
var bar = OtherMethod(myInt);
var myInt = SomeMethod(bar);
Я объявил еще одну переменную с тем же именем ниже в операторе using, и Visual Studio это не понравилось, но я не знал, как мне это сказать. Что за день. Еще раз спасибо всем, кто пришел со мной в это путешествие.