Процедура + временная таблица:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `days`(IN dateStart DATE, IN dateEnd DATE)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS date_range (day DATE);
WHILE dateStart <= dateEnd DO
INSERT INTO date_range VALUES (dateStart);
SET dateStart = DATE_ADD(dateStart, INTERVAL 1 DAY);
END WHILE;
SELECT * FROM date_range;
DROP TEMPORARY TABLE IF EXISTS date_range;
END
внутренняя предназначена для области сборки (т. Е. Доступна только из кода в том же .exe или .dll)
private предназначена для области действия класса (т. Е. Доступна только из кода в том же классе).
Найдите объяснение ниже. Вы можете проверить эту ссылку для получения дополнительной информации - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Приватный: - Приватные члены доступны только в пределах своего типа (Свой класс).
Внутренний: - Внутренний элемент доступен только внутри сборки по наследству (его производному типу) или по экземпляру класса.
Ссылка:
Foo.frob()
будет называться как bar
как Foo
.
– Steve Kuo
24 February 2012 в 23:51
Частные члены доступны только внутри тела класса или структуры, в которой они объявлены.
Внутренние типы или элементы доступны только внутри файлов в одной сборке
b
объявлен как Bar
, то b.frob()
равен Bar.frob()
, а если b
объявлен как Foo
, то даже если b
равен , фактически экземпляр из Bar
, b.frob()
- Foo.frob()
. Это легко продемонстрировать, если вы создадите пример, в котором типы совместимы.
– David Moles
25 February 2012 в 00:43
internal
элементы видны всему коду в сборке, в которой они объявлены.
(И для других сборок, на которые ссылается атрибут [InternalsVisibleTo]
)
private
, элементы видны только декларирующему классу. (включая вложенные классы)
Внешний (не вложенный) класс не может быть объявлен private
, так как нет содержащей области действия, чтобы сделать его закрытым.
Чтобы ответить на вопрос, который вы забыли задать, protected
члены похожи на private
членов, но также видны во всех классах, которые наследуют декларирующий тип. (Но только для выражения, по крайней мере, типа текущего класса)
private - инкапсуляции в классе / scope / struct ect '.
внутренняя - герметизация в сборках.
Internal позволит вам ссылаться, скажем, на статический класс доступа к данным (для обеспечения безопасности потоков) между несколькими классами бизнес-логики, не подписываясь на них, чтобы наследовать этот класс / отключение друг от друга в пулах соединений, и в конечном итоге избежать класс DAL для продвижения доступа на общественном уровне. Это имеет бесчисленное множество опор в дизайне и лучших практиках.
Entity Framework хорошо использует этот тип доступа