Leider wird der Zugriff verweigert. Folgende Fehlermeldung erscheint in
Visual Studio 2010:
Fehler 1 Der Zugriff auf "netpcap.Form1.mac_address.byte1" ist aufgrund
der Sicherheitsebene nicht möglich.
Wie kann man auf die Elemente von der Struktur zugreifen?
Peter II schrieb:> bei einer struct sind alle Member immer public.
Sicher?
Zitat:
The access level for class members and struct members, including nested
classes and structs, is private by default.
csharp_user schrieb:> Das kann ich nicht ganz nachvollziehen. Die Methode btnInit_Click wird> doch in der Klasse Form1 definiert
ich habe keine richtigen Viewer parat.
davor kommt doch aber die main, die steht doch auch nicht in dem Form
oder?
Boris P. schrieb:> Sicher?>> Zitat:> The access level for class members and struct members, including nested> classes and structs, is private by default.
naja, bei C++ bin ich mir sicher, ich dache das es bei C# auch so ist
> In C++, a structure is the same as a class except that its members are> public by default.
csharp_user schrieb:> Dieses C# ist echt ein komplizierter Dreck!
C# ist eine saubere Sprache, wenn du damit nicht umgehen kannst liegt es
bestimmt nicht an der Sprache.
hast du es mit dem Public der Members mal versucht? Wie hast du es
getestet?
Hab ALLES in public umbenannt. Die Struktur ist ebenfalls public. Deie
Fehlermeldung erscheint immer noch. Ich benötige C#, da ich Daten besser
visualisieren kann. In C++ win32 ist dies nicht so möglich. Früher gab
es noch das tolle Borland C/C++. Da war die GUI echt toll.
Also ich arbeite mit Struct in C# überhaupt nicht ich vervende einfach
eine Eigene Klasse dafür die Einfach nur Eigenschaften enthällt. Damit
lässt sich viel leichter arbeiten
csharp_user schrieb:> In C geht dies viel eleganter.
Eleganz liegt im Auge des Betrachters. Ich würde mal behaupten in C geht
es an der Stelle eher "Quick & Dirty".
So etwa würde ich das vermutlich schreiben:
Mit serialize funktioniert es auch nicht. Visual Studio gibt eine
Fehlermeldung aus:
SerializationException wurde nicht behandelt.
Der Typ "netpcap.Form1+ethernet_header" in Assembly "netpcap,
Version=1.0.5449.24838, Culture=neutral, PublicKeyToken=null" ist nicht
als serialisierbar gekennzeichnet.
csharp_user schrieb:> Mit serialize funktioniert es auch nicht. Visual Studio gibt eine> Fehlermeldung aus:
hast du auch mal die Fehlermeldung gelesen?
Du musst sie als "serialisierbar gekennzeichnet"
Übrigens bekommt du im netzt auch mehr Hilfe, wenn man sich keine
deutschen Fehlermeldungen anzeigen lässt.
Ok. Die beiden Strukturen habe ich nun mit [Serializable] serialisierbar
gemacht. Zumindest erscheint keine Fehlermeldung mehr. Allerdings, wenn
man sich den Puffer anschaut werden die Daten nicht von Anfang an in den
Puffer "buffer" kopiert.
csharp_user schrieb:> Allerdings, wenn> man sich den Puffer anschaut werden die Daten nicht von Anfang an in den> Puffer "buffer" kopiert.
Ich vermute mal das diese Art der Serialisierung nicht dafür gedacht
ist, da werden noch Infos zu Klasse mit übertragen, damit man am anderen
Ende das objekt wieder herstellen kann.
Wenn es nicht gerade im Geschwindigkeit geht, warum nicht einfach in
einer schleife es in das neue Array kopieren?
C# ist nun mal nicht dafür gedacht, LowLevel Packete zusammenzubauen.
Moin,
also von meiner Seite aus kann ich nur sagen. Immer wenn ich so was
schreiben will, schreit es mich regelrecht an, dass ich das lieber in
einem Array speichern soll.
statt: