Как я могу обратиться к проекту от другого в c#?

Объяснение так же просто, как это

Если вы назначаете, передаете или возвращаете неопределенную переменную по ссылке, она будет создана.

blockquote>

(выделение мое)

Это то, что вы делаете; Присвоение неопределенного индекса по ссылке, чтобы оно было создано.

Пример # 1 Использование ссылок с неопределенными переменными

blockquote>
d);
var_dump(property_exists($c, 'd')); // bool(true)
?> 

Пример из руководства PHP

Тогда у вас есть еще один вопрос:

Между тем в то же время $ b [11] показывает значение NULL и isset () = FALSE, хотя его референт (по-видимому) существует (!) [/ ​​g9] blockquote>

Это также ясно объясняется в руководстве

isset - Определить, переменная установлена ​​и не является NULL

isset () вернет FALSE, если тестирует переменную, которая была установлена ​​в NULL

blockquote>

Поскольку она NULL, isset() возвращает FALSE.

27
задан C.. 21 February 2010 в 20:09
поделиться

9 ответов

Во-первых, вам нужно добавить ссылку на 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

48
ответ дан 28 November 2019 в 04:54
поделиться

Вы должны указать «путь» к коду, который вы пытаетесь вызвать. Вы можете сделать это с помощью

1) Укажите пространство имен второго проекта / класса, который вы хотите использовать, как правило, в верхней части файла кода.

using MySecondProject;

var foo = new ClassFromSecondProject();

2) Явно указав имя класса, который вы хотите использовать, включая его пространство имен

//do stuff
var foo = new MySecondProject.ClassFromSecondProject();
//do more stuff
3
ответ дан bakasan 28 November 2019 в 04:54
поделиться

У меня была такая же проблема. Я трижды проверил все, и ссылки были добавлены, проект был в том же решении, все установлено. Я также знаю свои пространства имен, я даже получил завершение кода, но при сборке я получил ту же ошибку, что пространство имен не может быть найдено.

Мне потребовался один час, чтобы выяснить это: проект, который я добавил, который не нашел соответствующего пространства имен, был настроен на другую целевую среду .NET. Я изменил свое решение на «полный» .NET Framework 4 вместо Client Profile 4, но новый проект, который я добавил, снова был установлен в Client Profile.

Вместо того, чтобы предупреждать меня о неправильной конфигурации, он утверждал, что пространства имен не могут быть найдены.

Надеюсь, это кому-нибудь поможет и сэкономит время, которое я потратил впустую.

2
ответ дан Tom 28 November 2019 в 04:54
поделиться

У меня недостаточно представителей, чтобы поднять голос Тома, но он мне очень помог. Кроме того, вы должны выбрать ту же самую подрывную версию .NET Framework (кроме того, это тот же полный / основной / стандартный и т. Д.). Я указал 4.5 в тестовом проекте и получил эту ошибку, меняя ее на 4.6.1 (так же, как и другие), исправляет эту проблему.

1
ответ дан DaveDean1 28 November 2019 в 04:54
поделиться

Вам необходимо добавить Project2 к ссылкам Project1. Теперь вы можете получить доступ к классам из Project2. Не забудьте добавить правильное пространство имен!

0
ответ дан Vlad 28 November 2019 в 04:54
поделиться

Как заявили другие, вам нужно добавить (существующие) проекты в решение. Затем вам нужно добавить ссылку на них в Solution -> Projects . Теперь они должны отображаться со своими пространствами имен в Object Browser .

Есть еще одна вещь, в которой ты должен убедиться, что мне потребовались некоторые эксперименты, чтобы выяснить это. Всякий раз, когда я добавлял свой второй проект, первый перестал работать, и сообщение об ошибке было таким же, как когда проект пропускает ссылку ( «Не удалось найти тип или имя пространства имен« Ber »(вы пропускаете использование директива или ссылка на сборку?) "). Проблема заключалась в том, что оба проекта имели одинаковое имя сборки по умолчанию («Библиотека классов») в проекте Свойства -> Приложение . Так дайте им уникальные имена. Я использую так же, как пространство имен по умолчанию .

0
ответ дан Per 28 November 2019 в 04:54
поделиться

У меня была такая же проблема с этой ошибкой. Я не смог обнаружить project1 из project2. Я добавил ссылку из проекта 2 в проект 1, но она все еще не работала. Затем я выгрузил project1, удалил его из решения. Затем я добавил его снова, сделал ссылку из проекта 2 и та да ... это сработало .....: -)

0
ответ дан Hyosoka Poipo 28 November 2019 в 04:54
поделиться

Выберите проект, который вы будете использовать (например, project1), щелкните его правой кнопкой мыши в проводнике решений и нажмите "Добавить ссылку".

Отсюда вы сможете добавить ссылку на другое решение (проект2).

Затем вам нужно будет только добавить оператор using в ваш основной проект (проект1), и вы сможете нормально обращаться к нему.

1
ответ дан 28 November 2019 в 04:54
поделиться

Предполагая, что ваш вопрос - .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();
        }
    }
}

Надежда, которая очищает его немного для вас.

2
ответ дан 28 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: