Namespace

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

burnIIIusion
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.10.2005 (Вс) 20:59
Откуда: Днепр

Namespace

Сообщение burnIIIusion » 31.10.2005 (Пн) 20:46

Здравствуйте!
Заранее извиняюсь за глупый вопрос :oops: .
Для чего используется следующая конструкция?
Код: Выделить всё
Namespace "имя"
...
End Namespace

Есть предположение :? , что созданные внутри переменные с модификатором доступа Friend будут жить только в пределах этого "космического имени" или "именного пробела" :) (с теминологией не разобрался еще :scratch: ). Или это я не в ту степь залез :viking: ?
Windows - XP SP2
VB.NET - 7.1.3088
Framework - 1.1.4322
MSDN - July 2003
DirectX SDK - Summer 2003

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.10.2005 (Пн) 21:05

Friend будут жить в пределах сборки вне зависимости от назначенных неймспейсов.

А нужны они, пожалуй, только для красоты :-)
Изображение

burnIIIusion
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.10.2005 (Вс) 20:59
Откуда: Днепр

Сообщение burnIIIusion » 31.10.2005 (Пн) 21:19

Как для красоты :shock: ? Для красоты токо #Region нужен. Не может такого быть :x ! Помню еще в школе, когда препод страшными словами ругался, часто выкрикивал:
Код: Выделить всё
#include <iostream.h>
namespace std

или чёто вроде :D . Вообщем не может так все просто быть :? . Здесь наверняка скрыт тайный хитрый смысл :| .
Windows - XP SP2
VB.NET - 7.1.3088
Framework - 1.1.4322
MSDN - July 2003
DirectX SDK - Summer 2003

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.11.2005 (Вт) 10:27

Namespace - пространство имен
Имена переменных должны быть уникальными в пределах одного пространства имен, т.е. если у тебя есть

Namespcae1 и в нем есть переменная Var1
то в если ты обьявишь такую же переменную в namespace2 конфликтов не будет

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.11.2005 (Вт) 10:45

Ramzes писал(а):Namespace - пространство имен
Имена переменных должны быть уникальными в пределах одного пространства имен, т.е. если у тебя есть

Namespcae1 и в нем есть переменная Var1
то в если ты обьявишь такую же переменную в namespace2 конфликтов не будет

Как это ты переменные вне классов собрался объявлять? :shock:
Изображение

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.11.2005 (Вт) 10:49

почему вне классов, в клсассах, но есть еще переменные Public не забыли?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.11.2005 (Вт) 11:42

Если у меня в одном и том же неймспейсе есть класс Class1 с переменной Var1, и класс Class2 с переменной Var1, то конфликтов так и не будет.

Как же может без использования этих неймспейсов возникнуть конфликт имён переменных?
Изображение

burnIIIusion
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.10.2005 (Вс) 20:59
Откуда: Днепр

Сообщение burnIIIusion » 02.11.2005 (Ср) 18:47

Ниужели никто не знает :shock: ? Объясните кто небудь толково зачем прописывать Namespace? А еще лучше, если можно, напишите мини-код, в котором, если не объявить Namepace, будет ошибка.
Windows - XP SP2
VB.NET - 7.1.3088
Framework - 1.1.4322
MSDN - July 2003
DirectX SDK - Summer 2003

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.11.2005 (Ср) 18:50

tyomitch писал(а):Если у меня в одном и том же неймспейсе есть класс Class1 с переменной Var1, и класс Class2 с переменной Var1, то конфликтов так и не будет.

Как же может без использования этих неймспейсов возникнуть конфликт имён переменных?

Если переменная будет публичной то будт конфликт

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.11.2005 (Ср) 18:50

burnIIIusion писал(а):Ниужели никто не знает :shock: ? Объясните кто небудь толково зачем прописывать Namespace? А еще лучше, если можно, напишите мини-код, в котором, если не объявить Namepace, будет ошибка.

Такого кода не существует, это для удобства

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.11.2005 (Ср) 19:25

Ramzes писал(а):
tyomitch писал(а):Если у меня в одном и том же неймспейсе есть класс Class1 с переменной Var1, и класс Class2 с переменной Var1, то конфликтов так и не будет.

Как же может без использования этих неймспейсов возникнуть конфликт имён переменных?

Если переменная будет публичной то будт конфликт

Не гони :evil:
Никакого конфликта не будет, и быть не может.
Хочешь - проверь.
Изображение

burnIIIusion
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.10.2005 (Вс) 20:59
Откуда: Днепр

Сообщение burnIIIusion » 02.11.2005 (Ср) 22:52

Уже сам разобрался 8)
Код: Выделить всё
Namespace N1
Public Class a
...
End Class

Public Class b
...
End Class
End Namespace

Namespace N2
Public Class a
...
End Class

Public Class b
...
End Class
End Namespace


Вообщем в разных намеспейсах можно создать полностью одинаковые классы. Вызываются они просто:
Код: Выделить всё
N2.a

или
Код: Выделить всё
N1.b

По умолчанию обращение идет к классу, который находится в одном намеспейсе вместе со "строкой", которая обращалась к классу. Вообщем если поместить функцию main в Namespace N1, то можно вместо "N1.a" писать просто "a".

Такая фича должна быть удобна если имеется куча классов и их необходимо "классифицировать". Что-то вроде надкласса. Но в мелких проэктах, как сказали выше, нужны они только для красоты (или чтоб озадачить читающего код, как любит делать многоуважаемая Microsoft :x ).

З.Ы. один намеспейс в другой вставить не выйдет.
З.Ы.Ы. так делать нельзя:
Код: Выделить всё
Module Module1
    Namespace N
    ...
    End Namespace
End Module

Ругается :) .
Windows - XP SP2
VB.NET - 7.1.3088
Framework - 1.1.4322
MSDN - July 2003
DirectX SDK - Summer 2003

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.11.2005 (Чт) 1:07

burnIIIusion, назови хоть одну причину писать два класса с одинаковыми именами? :-?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.11.2005 (Чт) 1:54

Обфускация :albino:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

burnIIIusion
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 23.10.2005 (Вс) 20:59
Откуда: Днепр

Сообщение burnIIIusion » 03.11.2005 (Чт) 9:39

burnIIIusion, назови хоть одну причину писать два класса с одинаковыми именами?

А, хрен его знает :? ? Видать Микрософт задумала умную вещь, чтобы не было путаниц с одиниковыми именами. Но их и так не бывает. Если в будущем пригодится - обязательно напишу.
Обфускация

Лингво таких слов не знает :lol: .
Windows - XP SP2
VB.NET - 7.1.3088
Framework - 1.1.4322
MSDN - July 2003
DirectX SDK - Summer 2003


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList