Et pourquoi ceci compile-t-il ? (exactement le même code, mais en C#) :
public class TestClass { protected class NestedClass { public NestedClass(test p) { } }
protected enum test : int { un, deux } }
Aurais-je trouver un bug du compilo VB ?
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Patrice Ongla
C'est pas du tout une explication mais un constructeur public dans une classe protected, ça me fait bizarre. La portée du constructeur dépasse celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme pour private pour NestedClass et public pour son New, ça marche même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là et ça ne compile pas non plus si on met le New en protected, en revanche, si tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce que tu veux). La restriction semble en effet éxagérée et inutile. Ca serait justifiée si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
"Pierre Alexis" a écrit dans le message de news:
Bonjour,
Je râle, je râle, je râle :-@
Pourquoi est-ce que ce code ne veut pas compiler ?
Public Class TestClass
Protected Class NestedClass Public Sub New(ByVal p As TestClass.TestEnum)
End Sub End Class
Protected Enum TestEnum As Integer One Two End Enum
End Class
Moi j'aimerais pouvoir me créer une sous-classe contenant un champ d'un type "Protected". Pas moyen !
L'erreur retournée est :
'p' ne peut pas exposer un type Protected en dehors de Protected class 'NestedClass'.
Je vois vraiment pas pourquoi je ne pourrais pas :-@
Merci.
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
C'est pas du tout une explication mais un constructeur public dans une
classe protected, ça me fait bizarre. La portée du constructeur dépasse
celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme
pour private pour NestedClass et public pour son New, ça marche même si on
ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là
et ça ne compile pas non plus si on met le New en protected, en revanche, si
tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce
que tu veux).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée si
NestedClass était public (et d'ailleurs il refuse aussi) mais là....
"Pierre Alexis" <alexispierre@hotmail.com> a écrit dans le message de news:
eD5wrwhDFHA.1496@TK2MSFTNGP14.phx.gbl...
Bonjour,
Je râle, je râle, je râle :-@
Pourquoi est-ce que ce code ne veut pas compiler ?
Public Class TestClass
Protected Class NestedClass
Public Sub New(ByVal p As TestClass.TestEnum)
End Sub
End Class
Protected Enum TestEnum As Integer
One
Two
End Enum
End Class
Moi j'aimerais pouvoir me créer une sous-classe contenant un champ d'un
type "Protected". Pas moyen !
L'erreur retournée est :
'p' ne peut pas exposer un type Protected en dehors de Protected class
'NestedClass'.
Je vois vraiment pas pourquoi je ne pourrais pas :-@
C'est pas du tout une explication mais un constructeur public dans une classe protected, ça me fait bizarre. La portée du constructeur dépasse celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme pour private pour NestedClass et public pour son New, ça marche même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là et ça ne compile pas non plus si on met le New en protected, en revanche, si tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce que tu veux). La restriction semble en effet éxagérée et inutile. Ca serait justifiée si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
"Pierre Alexis" a écrit dans le message de news:
Bonjour,
Je râle, je râle, je râle :-@
Pourquoi est-ce que ce code ne veut pas compiler ?
Public Class TestClass
Protected Class NestedClass Public Sub New(ByVal p As TestClass.TestEnum)
End Sub End Class
Protected Enum TestEnum As Integer One Two End Enum
End Class
Moi j'aimerais pouvoir me créer une sous-classe contenant un champ d'un type "Protected". Pas moyen !
L'erreur retournée est :
'p' ne peut pas exposer un type Protected en dehors de Protected class 'NestedClass'.
Je vois vraiment pas pourquoi je ne pourrais pas :-@
Merci.
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Pierre Alexis
Patrice Ongla a écrit :
C'est pas du tout une explication mais un constructeur public dans une classe protected, ça me fait bizarre. La portée du constructeur dépasse celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme pour private pour NestedClass et public pour son New, ça marche même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là et ça ne compile pas non plus si on met le New en protected, en revanche, si tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce que tu veux).
Friend ne me convient pas très très bien... Car si je dérive ma classe de base TestClass en une classe dérivée DeriveClass que je place dans un autre assembly, ma classe encapsulée ne sera plus accessible par mon fils (alors qu'il le faut).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
Clairement exagérée. D'ailleurs en C# et VB 2005, le code que j'ai collé compile.
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Patrice Ongla a écrit :
C'est pas du tout une explication mais un constructeur public dans une
classe protected, ça me fait bizarre. La portée du constructeur dépasse
celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme
pour private pour NestedClass et public pour son New, ça marche même si on
ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là
et ça ne compile pas non plus si on met le New en protected, en revanche, si
tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce
que tu veux).
Friend ne me convient pas très très bien... Car si je dérive ma classe
de base TestClass en une classe dérivée DeriveClass que je place dans un
autre assembly, ma classe encapsulée ne sera plus accessible par mon
fils (alors qu'il le faut).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée si
NestedClass était public (et d'ailleurs il refuse aussi) mais là....
Clairement exagérée. D'ailleurs en C# et VB 2005, le code que j'ai collé
compile.
C'est pas du tout une explication mais un constructeur public dans une classe protected, ça me fait bizarre. La portée du constructeur dépasse celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme pour private pour NestedClass et public pour son New, ça marche même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là et ça ne compile pas non plus si on met le New en protected, en revanche, si tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce que tu veux).
Friend ne me convient pas très très bien... Car si je dérive ma classe de base TestClass en une classe dérivée DeriveClass que je place dans un autre assembly, ma classe encapsulée ne sera plus accessible par mon fils (alors qu'il le faut).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
Clairement exagérée. D'ailleurs en C# et VB 2005, le code que j'ai collé compile.
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Pierre Alexis
Pierre Alexis a écrit :
Je vois vraiment pas pourquoi je ne pourrais pas :-@
Les pros sont-ils d'accord que c'est un bug du compilo ?
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Pierre Alexis a écrit :
Je vois vraiment pas pourquoi je ne pourrais pas :-@
Les pros sont-ils d'accord que c'est un bug du compilo ?
Je vois vraiment pas pourquoi je ne pourrais pas :-@
Les pros sont-ils d'accord que c'est un bug du compilo ?
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Patrice Ongla
Soit dit en passant, il n'y a pas très longtemps que je me suis mis activement au dévelopement .net et, passé l'enthousiasme du début, je commence à avoir de sérieux doutes sur la maturité de la plateforme. J'ai mille petits pbs (dans le genre du tien) pour faire des choses simples. Et si j'en juge au peu de réponse que je trouve sur les forums (ici ou ailleurs), il semble que les solutions n'aillent pas de soi. Ces pbs semblent résolus pour la plupart en VS 2005, mais que d'efforts pour peu de chose. Productivité ? Pas encore...
"Pierre Alexis" a écrit dans le message de news:
Patrice Ongla a écrit :
C'est pas du tout une explication mais un constructeur public dans une classe protected, ça me fait bizarre. La portée du constructeur dépasse celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme pour private pour NestedClass et public pour son New, ça marche même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là et ça ne compile pas non plus si on met le New en protected, en revanche, si tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce que tu veux).
Friend ne me convient pas très très bien... Car si je dérive ma classe de base TestClass en une classe dérivée DeriveClass que je place dans un autre assembly, ma classe encapsulée ne sera plus accessible par mon fils (alors qu'il le faut).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
Clairement exagérée. D'ailleurs en C# et VB 2005, le code que j'ai collé compile.
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/
Soit dit en passant, il n'y a pas très longtemps que je me suis mis
activement au dévelopement .net et, passé l'enthousiasme du début, je
commence à avoir de sérieux doutes sur la maturité de la plateforme. J'ai
mille petits pbs (dans le genre du tien) pour faire des choses simples. Et
si j'en juge au peu de réponse que je trouve sur les forums (ici ou
ailleurs), il semble que les solutions n'aillent pas de soi. Ces pbs
semblent résolus pour la plupart en VS 2005, mais que d'efforts pour peu de
chose. Productivité ? Pas encore...
"Pierre Alexis" <alexispierre@hotmail.com> a écrit dans le message de news:
u9YZ5WoDFHA.3596@TK2MSFTNGP12.phx.gbl...
Patrice Ongla a écrit :
C'est pas du tout une explication mais un constructeur public dans une
classe protected, ça me fait bizarre. La portée du constructeur dépasse
celle de sa classe. Néanmois je trouve aussi que ça devrait marcher
(comme pour private pour NestedClass et public pour son New, ça marche
même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu
de ce côté là et ça ne compile pas non plus si on met le New en
protected, en revanche, si tu passes le constructeur en Friend, ça marche
(mais c'est sans doute pas ce que tu veux).
Friend ne me convient pas très très bien... Car si je dérive ma classe de
base TestClass en une classe dérivée DeriveClass que je place dans un
autre assembly, ma classe encapsulée ne sera plus accessible par mon fils
(alors qu'il le faut).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée
si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
Clairement exagérée. D'ailleurs en C# et VB 2005, le code que j'ai collé
compile.
Soit dit en passant, il n'y a pas très longtemps que je me suis mis activement au dévelopement .net et, passé l'enthousiasme du début, je commence à avoir de sérieux doutes sur la maturité de la plateforme. J'ai mille petits pbs (dans le genre du tien) pour faire des choses simples. Et si j'en juge au peu de réponse que je trouve sur les forums (ici ou ailleurs), il semble que les solutions n'aillent pas de soi. Ces pbs semblent résolus pour la plupart en VS 2005, mais que d'efforts pour peu de chose. Productivité ? Pas encore...
"Pierre Alexis" a écrit dans le message de news:
Patrice Ongla a écrit :
C'est pas du tout une explication mais un constructeur public dans une classe protected, ça me fait bizarre. La portée du constructeur dépasse celle de sa classe. Néanmois je trouve aussi que ça devrait marcher (comme pour private pour NestedClass et public pour son New, ça marche même si on ne voit pas trop à quoi ça sert). Du coup j'ai regardé un peu de ce côté là et ça ne compile pas non plus si on met le New en protected, en revanche, si tu passes le constructeur en Friend, ça marche (mais c'est sans doute pas ce que tu veux).
Friend ne me convient pas très très bien... Car si je dérive ma classe de base TestClass en une classe dérivée DeriveClass que je place dans un autre assembly, ma classe encapsulée ne sera plus accessible par mon fils (alors qu'il le faut).
La restriction semble en effet éxagérée et inutile. Ca serait justifiée si NestedClass était public (et d'ailleurs il refuse aussi) mais là....
Clairement exagérée. D'ailleurs en C# et VB 2005, le code que j'ai collé compile.
-- Pierre ALEXIS Courriel : FAQ Visual Basic : http://faq.vb.free.fr/