Ссылка на открытую строку из другого класса? - PullRequest
0 голосов
/ 10 августа 2011

По какой-то причине, даже если я объявил строку в Program.cs статической и публичной, когда я ссылаюсь на нее в другом классе, например Class1.cs, он не находит его:

Program.cs

public static string fileName = "test.txt";

Class1.cs

    XElement address = new XElement("PingResults",
        new XElement("NameoFile", fileName),
        new XElement("URL", test),
        new XElement("Time", test2)
    );

Я также пытался использовать Class1.fileName, но не повезло .. Есть идеи?

Ответы [ 7 ]

4 голосов
/ 10 августа 2011

В этом случае вы бы использовали Program.fileName - потому что fileName - это поле класса Program.

Важно отметить, что это не лучший способ - public static вещивидимы для всех классов, однако вам, вероятно, было бы лучше передать параметр методу в Class1 - например, ProcessXml(fileName) будет вызовом метода, public void ProcessXml(string fileName) будет сигнатурой метода в Class1, тогда внутриМетод ProcessXml или как его там называют, у вас есть доступ к параметру fileName и его значению.

Как и предполагалось в Cicada, именование также отключено.Смотрите здесь некоторые рекомендации: http://msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx

2 голосов
/ 10 августа 2011

Вы определили fileName в классе Program.Поэтому вы должны получить к нему доступ через Program.fileName.

. Примечание: fileName не соответствует стандартам именования .NET.используйте FileName вместо!

0 голосов
/ 10 августа 2011

любой статический член принадлежит типу.Поэтому вам нужно будет указать компилятору, в каком типе искать член.В C # нет такой вещи, как истинные глобальные переменные.

Если предположить, что ваш класс называется Program, строка кода должна быть:

new XElement("NameoFile", Program.fileName),
0 голосов
/ 10 августа 2011

Статическим членам, используемым вне класса, должно предшествовать имя класса, в котором они объявлены. Попробуйте Program.fileName

0 голосов
/ 10 августа 2011

Это будет в любом классе, определенном в Program.cs, вероятно, в Program.

0 голосов
/ 10 августа 2011

Какой класс fileName является статическим членом?Это член класса Program?В этом случае вам необходимо Program.filename

A статическое поле f класса A должно быть доступно со следующим синтаксисом: A.f
A нестатично поле f класса A должно быть доступно с помощью a.f, где a является объектом (экземпляром) типа A

0 голосов
/ 10 августа 2011

Я думаю, вы можете получить его на Program.fileName, но это довольно плохой способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...