Объяснение так же просто, как это
Если вы назначаете, передаете или возвращаете неопределенную переменную по ссылке, она будет создана.
blockquote>(выделение мое)
Это то, что вы делаете; Присвоение неопределенного индекса по ссылке, чтобы оно было создано.
Пример # 1 Использование ссылок с неопределенными переменными
blockquote>d); var_dump(property_exists($c, 'd')); // bool(true) ?>
Тогда у вас есть еще один вопрос:
Между тем в то же время $ b [11] показывает значение NULL и isset () = FALSE, хотя его референт (по-видимому) существует (!) [/ g9] blockquote>
Это также ясно объясняется в руководстве
isset - Определить, переменная установлена и не является NULL
isset () вернет FALSE, если тестирует переменную, которая была установлена в NULL
blockquote>Поскольку она
NULL
,isset()
возвращает FALSE.
Во-первых, вам нужно добавить ссылку на Project2 в Project1.
Если вы перейдете в Project1 -> References -> Add Reference, вы должны увидеть опцию добавления проектов в решения и добавить проект2.
После добавления ссылки, чтобы вызвать класс Foo в пространстве имен Name1.Name2, вы можете использовать класс as
Name1.Name2.Foo foo = new Name1.Name2.Foo(...);
или, если вы хотите избежать ввода, вы можете добавить оператор using в верхней части файла
using Name1.Name2;
и теперь можете ссылаться на класс, используя просто Foo, например
Foo foo = new Foo(...);
Обратите внимание, вам придется разобраться с пространствами имен в Project2. Простое использование имени Project2 не сработает. Посмотрите на файл, содержащий объявление класса, который вы хотите использовать, и найдите определение пространства имен.
Так что если вы видите что-то вроде
namespace Name1.Name2 {
class Bar {
// Blah
}
// Notice the word public here.
public class Foo {
// Blah
}
}
Name1.Name2 - это пространство имен для Foo, и это то, что вам нужно использовать.
Также обратите внимание, что вам, скорее всего, понадобится модификатор доступа public для класса, который вы хотите использовать в Project1. Например, в приведенном выше сценарии вы должны иметь доступ к классу Foo, но не к классу Bar.
Эта страница поможет вам понять пространства имен: http://www.csharp-station.com/tutorials/lesson06.aspx
Вы должны указать «путь» к коду, который вы пытаетесь вызвать. Вы можете сделать это с помощью
1) Укажите пространство имен второго проекта / класса, который вы хотите использовать, как правило, в верхней части файла кода.
using MySecondProject;
var foo = new ClassFromSecondProject();
2) Явно указав имя класса, который вы хотите использовать, включая его пространство имен
//do stuff
var foo = new MySecondProject.ClassFromSecondProject();
//do more stuff
У меня была такая же проблема. Я трижды проверил все, и ссылки были добавлены, проект был в том же решении, все установлено. Я также знаю свои пространства имен, я даже получил завершение кода, но при сборке я получил ту же ошибку, что пространство имен не может быть найдено.
Мне потребовался один час, чтобы выяснить это: проект, который я добавил, который не нашел соответствующего пространства имен, был настроен на другую целевую среду .NET. Я изменил свое решение на «полный» .NET Framework 4 вместо Client Profile 4, но новый проект, который я добавил, снова был установлен в Client Profile.
Вместо того, чтобы предупреждать меня о неправильной конфигурации, он утверждал, что пространства имен не могут быть найдены.
Надеюсь, это кому-нибудь поможет и сэкономит время, которое я потратил впустую.
У меня недостаточно представителей, чтобы поднять голос Тома, но он мне очень помог. Кроме того, вы должны выбрать ту же самую подрывную версию .NET Framework (кроме того, это тот же полный / основной / стандартный и т. Д.). Я указал 4.5 в тестовом проекте и получил эту ошибку, меняя ее на 4.6.1 (так же, как и другие), исправляет эту проблему.
Вам необходимо добавить Project2 к ссылкам Project1. Теперь вы можете получить доступ к классам из Project2. Не забудьте добавить правильное пространство имен!
Как заявили другие, вам нужно добавить (существующие) проекты в решение. Затем вам нужно добавить ссылку на них в Solution -> Projects . Теперь они должны отображаться со своими пространствами имен в Object Browser .
Есть еще одна вещь, в которой ты должен убедиться, что мне потребовались некоторые эксперименты, чтобы выяснить это. Всякий раз, когда я добавлял свой второй проект, первый перестал работать, и сообщение об ошибке было таким же, как когда проект пропускает ссылку ( «Не удалось найти тип или имя пространства имен« Ber »(вы пропускаете использование директива или ссылка на сборку?) "). Проблема заключалась в том, что оба проекта имели одинаковое имя сборки по умолчанию («Библиотека классов») в проекте Свойства -> Приложение . Так дайте им уникальные имена. Я использую так же, как пространство имен по умолчанию .
У меня была такая же проблема с этой ошибкой. Я не смог обнаружить project1 из project2. Я добавил ссылку из проекта 2 в проект 1, но она все еще не работала. Затем я выгрузил project1, удалил его из решения. Затем я добавил его снова, сделал ссылку из проекта 2 и та да ... это сработало .....: -)
Выберите проект, который вы будете использовать (например, project1), щелкните его правой кнопкой мыши в проводнике решений и нажмите "Добавить ссылку".
Отсюда вы сможете добавить ссылку на другое решение (проект2).
Затем вам нужно будет только добавить оператор using в ваш основной проект (проект1), и вы сможете нормально обращаться к нему.
Предполагая, что ваш вопрос - .NET:
Если вы хотите проверить свою строку на значение NULL, а также использовать IsStartOrEmpty, если вы уже знаете, что ваша строка не имеет значение null, например, при проверке TextBox.Text и т.д., не используйте IsStartOrEmpty, а затем приходит в ваш вопрос.
Так что, по моему мнению, String.Length менее совершенство, чем сравнение строк.
Я протестировал событие (я также протестировал с C #, тот же результат):
Module Module1
Sub Main()
Dim myString = ""
Dim a, b, c, d As Long
Console.WriteLine("Way 1...")
a = Now.Ticks
For index = 0 To 10000000
Dim isEmpty = myString = ""
Next
b = Now.Ticks
Console.WriteLine("Way 2...")
c = Now.Ticks
For index = 0 To 10000000
Dim isEmpty = myString.Length = 0
Next
d = Now.Ticks
Dim way1 = b - a, way2 = d - c
Console.WriteLine("way 1 took {0} ticks", way1)
Console.WriteLine("way 2 took {0} ticks", way2)
Console.WriteLine("way 1 took {0} ticks more than way 2", way1 - way2)
Console.Read()
End Sub
End Module
Результат:
Way 1...
Way 2...
way 1 took 624001 ticks
way 2 took 468001 ticks
way 1 took 156000 ticks more than way 2
Это означает, что сравнение занимает больше времени, чем проверка длины строки.
-121--2440800-Сначала необходимо добавить ссылку на Project2 в Project1.
При переходе по пути Project1 - > Ссылки - > Добавить ссылку появится возможность добавления проектов в решения и проекта2.
После добавления ссылки, чтобы вызвать класс Foo в пространстве имен Name1.Name2, можно использовать класс как
Name1.Name2.Foo foo = new Name1.Name2.Foo(...);
или, если вы хотите избежать ввода, вы можете добавить оператор use в верхней части файла
using Name1.Name2;
и теперь можете ссылаться на класс, используя только Foo, как
Foo foo = new Foo(...);
Примечание, вы будете иметь выяснить пространства имен в Project2 Просто использовать имя Project2 не получится. Просмотрите файл, содержащий объявление класса, который требуется использовать, и найдите определение пространства имен.
Так что если вы видите что-то как
namespace Name1.Name2 {
class Bar {
// Blah
}
// Notice the word public here.
public class Foo {
// Blah
}
}
Name1.Name2 является пространством имен для Foo и это то, что вы должны использовать.
Также обратите внимание, что для класса, который требуется использовать в Project1, скорее всего, потребуется модификатор доступа public . Например, в приведенном выше сценарии можно получить доступ к классу Foo, но не к классу Bar.
Эта страница поможет вам понять пространства имен: http://www.csharp-station.com/tutorials/lesson06.aspx
-121--1446183- Необходимо просто добавить ссылку в Project1 к Project 2. Для этого щелкните правой кнопкой мыши по папке References
на панели обозревателя решений, затем можно использовать опцию Browse
для поиска Project2. Если он уже добавлен в решение, можно просто использовать закладку Проекты
.
Просто чтобы прояснить это для вас. Добавление проекта в Решение
не совпадает с добавлением ссылки. Откройте Project2 в Visual Studio. Затем добавьте Project1 в решение или щелкните правой кнопкой мыши по папке References
в Project2 и добавьте ссылку на Project1. Для обеспечения правильного добавления ссылки разверните папку ссылок и убедитесь, что в списке отображаются Project1
.
Пример
Создайте новое консольное приложение и вызовите его MyApplication
. Затем щелкните правой кнопкой мыши по Solution
и выберите опцию Add New Project
, создайте новый проект библиотеки и назовите его MyLib
. На этом этапе вы просто добавили 2 проекта в решение 1, но ссылки между каждым проектом не были созданы.
Щелкните правой кнопкой мыши папку References
в проекте MyApplication
и выберите Add Reference...
. Поскольку MyLib
уже является частью решения, можно перейти на закладку Проекты
и выбрать MyLib
из списка, который создает новую ссылку на этот проект в MyApplication
. Если проект не является частью решения, можно использовать закладку Обзор
и найти проект с помощью проводника.
Поэтому на данном этапе мы установили ссылку в MyApplication
на MyLib
. Таким образом, для использования классов из MyLib
внутри MyApplication
мы можем либо объявить использование для проекта внутри блока, либо мы можем использовать полный путь непосредственно, например,
// main code file in MyApplication
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyLib; // This will allow me to access the classes inside MyLib directly
namespace PdfPrinter
{
class Program
{
static void Main(string[] args)
{
// if we have declared the namespace at the top, we can do:
MyLibClass cls = new MyLibClass();
// or if you don't want to add the namespace at the top we have to do:
MyLib.MyLibClass cls = new MyLib.MyLibClass();
}
}
}
Надежда, которая очищает его немного для вас.