Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
C ÓïÑÔʵÏÖÃæÏò¶ÔÏó±à³Ì
 
×÷Õߣºonlyshi
  2464  次浏览      27
 2020-8-21 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½²½âÁËÓà C ÓïÑÔʵÏÖ·â×°¡¢¼Ì³Ð ¡¢¶à̬µÈÄÚÈÝ£¬Ï£Íû±¾ÎĶԴó¼ÒÓаïÖú¡£
ÎÄÕÂÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûAnna±à¼­ÍƼö¡£

1¡¢ÒýÑÔ

ÃæÏò¶ÔÏó±à³Ì£¨OOP£©²¢²»ÊÇÒ»ÖÖÌØ¶¨µÄÓïÑÔ»òÕß¹¤¾ß£¬ËüÖ»ÊÇÒ»ÖÖÉè¼Æ·½·¨¡¢Éè¼ÆË¼Ïë¡£Ëü±íÏÖ³öÀ´µÄÈý¸ö×î»ù±¾µÄÌØÐÔ¾ÍÊÇ·â×°¡¢¼Ì³ÐÓë¶à̬¡£ºÜ¶àÃæÏò¶ÔÏóµÄ±à³ÌÓïÑÔÒѾ­°üº¬ÕâÈý¸öÌØÐÔÁË£¬ÀýÈç Smalltalk¡¢C++¡¢Java¡£µ«ÊÇÄãÒ²¿ÉÒÔÓü¸ºõËùÓеıà³ÌÓïÑÔÀ´ÊµÏÖÃæÏò¶ÔÏó±à³Ì£¬ÀýÈç ANSI-C¡£Òª¼Çס£¬ÃæÏò¶ÔÏóÊÇÒ»ÖÖ˼Ï룬һÖÖ·½·¨£¬²»ÒªÌ«¾ÐÄàÓÚ±à³ÌÓïÑÔ¡£

2¡¢·â×°

·â×°¾ÍÊǰÑÊý¾ÝºÍ·½·¨´ò°üµ½Ò»¸öÀàÀïÃæ¡£ÆäʵCÓïÑÔ±à³ÌÕßÓ¦¸Ã¶¼ÒѾ­½Ó´¥¹ýÁË£¬C ±ê×¼¿â

ÖÐµÄ fopen(), fclose(), fread(), fwrite()µÈº¯ÊýµÄ²Ù×÷¶ÔÏó¾ÍÊÇ FILE¡£Êý¾ÝÄÚÈݾÍÊÇ FILE£¬Êý¾ÝµÄ¶Áд²Ù×÷¾ÍÊÇ fread()¡¢fwrite()£¬fopen() Àà±ÈÓÚ¹¹Ô캯Êý£¬fclose() ¾ÍÊÇÎö¹¹º¯Êý¡£Õâ¸ö¿´ÆðÀ´ËƺõºÜºÃÀí½â£¬ÄÇÏÂÃæÎÒÃÇʵÏÖһϻù±¾µÄ·â×°ÌØÐÔ¡£

#ifndef SHAPE_H
#define SHAPE_H
#include <stdint.h>
// Shape µÄÊôÐÔ
typedef struct {
int16_t x;
int16_t y;
} Shape;
// Shape µÄ²Ù×÷º¯Êý£¬½Ó¿Úº¯Êý
void Shape_ctor (Shape * const me, int16_t x, int16_t y);
void Shape_moveBy (Shape * const me, int16_t dx, int16_t dy);
int16_t Shape_getX (Shape const * const me);
int16_t Shape_getY (Shape const * const me);
#endif /* SHAPE_H */

ÕâÊÇ Shape ÀàµÄÉùÃ÷£¬·Ç³£¼òµ¥£¬ºÜºÃÀí½â¡£Ò»°ã»á°ÑÉùÃ÷·Åµ½Í·ÎļþÀïÃæ ¡°Shape.h¡±¡£

À´¿´Ï Shape ÀàÏà¹ØµÄ¶¨Ò壬µ±È»ÊÇÔÚ ¡°Shape.c¡± ÀïÃæ¡£

#include "shape.h"
// ¹¹Ô캯Êý
void Shape_ctor (Shape * const me, int16_t x, int16_t y)
{
me->x = x;
me->y = y;
}
void Shape_moveBy (Shape * const me, int16_t dx, int16_t dy)
{
me->x += dx;
me->y += dy;
}
// »ñÈ¡ÊôÐÔÖµº¯Êý
int16_t Shape_getX(Shape const * const me)
{
return me->x;
}
int16_t Shape_getY(Shape const * const me)
{
return me->y;
}

ÔÙ¿´ÏÂ main.c

#include "shape.h" /* Shape class interface */
#include <stdio.h> /* for printf() */
int main()
{
Shape s1, s2; /* multiple instances of Shape */
Shape_ctor(&s1, 0, 1);
Shape_ctor(&s2, -1, 2);
printf ("Shape s1(x=%d,y=%d)\n", Shape_getX(&s1), Shape_getY(&s1));
printf ("Shape s2(x=%d,y=%d)\n", Shape_getX(&s2), Shape_getY(&s2));
Shape_moveBy(&s1, 2, -4);
Shape_moveBy(&s2, 1, -2);
printf (" Shape s1(x=%d,y=%d)\n", Shape_getX(&s1), Shape_getY(&s1));
printf("Shape s2(x=%d,y=%d)\n", Shape_getX(&s2), Shape_getY(&s2));
return 0;
}

±àÒëÖ®ºó£¬¿´¿´Ö´Ðнá¹û£º

Shape s1(x=0,y=1)
Shape s2(x=-1,y=2)
Shape s1(x=2,y=-3)
Shape s2(x=0,y=0)

Õû¸öÀý×Ó£¬·Ç³£¼òµ¥£¬·Ç³£ºÃÀí½â¡£ÒÔºóд´úÂëʱºò£¬Òª¶àÈ¥ÏëÏë±ê×¼¿âµÄÎļþIO²Ù×÷£¬ÕâÑùÒ²ÓÐÒâʶµÄÈ¥ÅàÑøÃæÏò¶ÔÏó±à³ÌµÄ˼ά¡£

3¡¢¼Ì³Ð

¼Ì³Ð¾ÍÊÇ»ùÓÚÏÖÓеÄÒ»¸öÀàÈ¥¶¨ÒåÒ»¸öÐÂÀ࣬ÕâÑùÓÐÖúÓÚÖØÓôúÂ룬¸üºÃµÄ×éÖ¯´úÂë¡£ÔÚ C ÓïÑÔÀïÃæ£¬È¥ÊµÏÖµ¥¼Ì³ÐÒ²·Ç³£¼òµ¥£¬Ö»Òª°Ñ»ùÀà·Åµ½¼Ì³ÐÀàµÄµÚÒ»¸öÊý¾Ý³ÉÔ±µÄλÖþÍÐÐÁË¡£

ÀýÈ磬ÎÒÃÇÏÖÔÚÒª´´½¨Ò»¸ö Rectangle À࣬ÎÒÃÇÖ»Òª¼Ì³Ð Shape ÀàÒѾ­´æÔÚµÄÊôÐԺͲÙ×÷£¬ÔÙÌí¼Ó²»Í¬ÓÚ Shape µÄÊôÐԺͲÙ×÷µ½ Rectangle ÖС£

ÏÂÃæÊÇ Rectangle µÄÉùÃ÷Ó붨Ò壺

#ifndef RECT_H
#define RECT_H
#include "shape.h" // »ùÀà½Ó¿Ú
// ¾ØÐεÄÊôÐÔ
typedef struct {
Shape super; // ¼Ì³Ð Shape
// ×Ô¼ºµÄÊôÐÔ
uint16_t width;
uint16_t height;
} Rectangle;
// ¹¹Ô캯Êý
void Rectangle_ctor (Rectangle * const me, int16_t x, int16_t y,
uint16_t width, uint16_t height);
#endif /* RECT_H */

 

#include "rect.h"
// ¹¹Ô캯Êý
void Rectangle_ctor(Rectangle * const me, int16_t x, int16_t y,
uint16_t width, uint16_t height)
{
/* first call superclass¡¯ ctor */
Shape_ctor(&me->super, x, y);
/* next, you initialize the attributes added by this subclass... */
me->width = width;
me->height = height;
}

 

ÎÒÃÇÀ´¿´Ò»Ï Rectangle µÄ¼Ì³Ð¹ØÏµºÍÄÚ´æ²¼¾Ö

ÒòΪÓÐÕâÑùµÄÄÚ´æ²¼¾Ö£¬ËùÒÔÄã¿ÉÒԺܰ²È«µÄ´«Ò»¸öÖ¸Ïò Rectangle ¶ÔÏóµÄÖ¸Õëµ½Ò»¸öÆÚÍû´«Èë Shape ¶ÔÏóµÄÖ¸ÕëµÄº¯ÊýÖУ¬¾ÍÊÇÒ»¸öº¯ÊýµÄ²ÎÊýÊÇ ¡°Shape *¡±£¬Äã¿ÉÒÔ´«Èë ¡°Rectangle *¡±£¬²¢ÇÒÕâÊǷdz£°²È«µÄ¡£ÕâÑùµÄ»°£¬»ùÀàµÄËùÓÐÊôÐԺͷ½·¨¶¼¿ÉÒÔ±»¼Ì³ÐÀà¼Ì³Ð£¡

#include "rect.h"
#include <stdio.h>
int main()
{
Rectangle r1, r2;
// ʵÀý»¯¶ÔÏó
Rectangle_ctor(&r1, 0, 2, 10, 15);
Rectangle_ctor(&r2, -1, 3, 5, 8);
printf("Rect r1(x=%d,y=%d,width=%d,height=%d)\n",
Shape_getX(&r1.super), Shape_getY(&r1.super),
r1.width, r1.height);
printf("Rect r2(x=%d,y=%d,width=%d,height=%d)\n",
Shape_getX(&r2.super), Shape_getY(&r2.super),
r2.width, r2.height);
// ×¢Ò⣬ÕâÀïÓÐÁ½ÖÖ·½Ê½£¬Ò»ÊÇǿתÀàÐÍ£¬¶þÊÇÖ±½ÓʹÓóÉÔ±µØÖ·
Shape_moveBy((Shape *)&r1, -2, 3);
Shape_moveBy(&r2.super, 2, -1);
printf("Rect r1(x=%d,y=%d,width=%d,height=%d)\n",
Shape_getX(&r1.super), Shape_getY(&r1.super),
r1.width, r1.height);
printf("Rect r2(x=%d,y=%d,width=%d,height=%d)\n",
Shape_getX(&r2.super), Shape_getY(&r2.super),
r2.width, r2.height);
return 0;
}

 

Êä³ö½á¹û£º

Rect r1(x=0,y=2,width=10,height=15)
Rect r2(x=-1,y=3,width=5,height=8)
Rect r1(x=-2,y=5,width=10,height=15)
Rect r2(x=1,y=2,width=5,height=8)

4¡¢¶à̬

C++ ÓïÑÔʵÏÖ¶à̬¾ÍÊÇʹÓÃÐ麯Êý¡£ÔÚ C ÓïÑÔÀïÃæ£¬Ò²¿ÉÒÔʵÏÖ¶à̬¡£

ÏÖÔÚ£¬ÎÒÃÇÓÖÒªÔö¼ÓÒ»¸öÔ²ÐΣ¬²¢ÇÒÔÚ Shape ÒªÀ©Õ¹¹¦ÄÜ£¬ÎÒÃÇÒªÔö¼Ó area() ºÍ draw() º¯Êý¡£µ«ÊÇ Shape Ï൱ÓÚ³éÏóÀ࣬²»ÖªµÀÔõôȥ¼ÆËã×Ô¼ºµÄÃæ»ý£¬¸ü²»ÖªµÀÔõôȥ»­³öÀ´×Ô¼º¡£¶øÇÒ£¬¾ØÐκÍÔ²ÐεÄÃæ»ý¼ÆË㷽ʽºÍ¼¸ºÎͼÏñÒ²ÊDz»Ò»ÑùµÄ¡£

ÏÂÃæÈÃÎÒÃÇÖØÐÂÉùÃ÷һϠShape Àà

#ifndef SHAPE_H
#define SHAPE_H
#include <stdint.h>
struct ShapeVtbl;
// Shape µÄÊôÐÔ
typedef struct {
struct ShapeVtbl const *vptr;
int16_t x;
int16_t y;
} Shape;
// Shape µÄÐé±í
struct ShapeVtbl {
uint32_t (*area)(Shape const * const me);
void (*draw)(Shape const * const me);
};
// Shape µÄ²Ù×÷º¯Êý£¬½Ó¿Úº¯Êý
void Shape_ctor (Shape * const me, int16_t x, int16_t y);
void Shape_moveBy (Shape * const me, int16_t dx, int16_t dy);
int16_t Shape_getX (Shape const * const me);
int16_t Shape_getY (Shape const * const me);
static inline uint32_t Shape_area(Shape const * const me)
{
return (*me->vptr->area)(me);
}
static inline void Shape_draw (Shape const * const me)
{
(*me->vptr->draw)(me);
}

Shape const *largestShape (Shape const *shapes[], uint32_t nShapes);
void drawAllShapes (Shape const *shapes[], uint32_t nShapes);
#endif /* SHAPE_H */

¿´Ï¼ÓÉÏÐ麯ÊýÖ®ºóµÄÀà¹ØÏµÍ¼

4.1 Ðé±íºÍÐéÖ¸Õë

Ðé±í£¨Virtual Table£©ÊÇÕâ¸öÀàËùÓÐÐ麯ÊýµÄº¯ÊýÖ¸ÕëµÄ¼¯ºÏ¡£

ÐéÖ¸Õ루Virtual Pointer£©ÊÇÒ»¸öÖ¸ÏòÐé±íµÄÖ¸Õë¡£Õâ¸öÐéÖ¸Õë±ØÐë´æÔÚÓÚÿ¸ö¶ÔÏóʵÀýÖУ¬»á±»ËùÓÐ×ÓÀà¼Ì³Ð¡£

ÔÚ¡¶Inside The C++ Object Model¡·µÄµÚÒ»ÕÂÄÚÈÝÖУ¬ÓÐÕâЩ½éÉÜ¡£

4.2 ÔÚ¹¹Ô캯ÊýÖÐÉèÖÃvptr

ÔÚÿһ¸ö¶ÔÏóʵÀýÖУ¬vptr ±ØÐë±»³õʼ»¯Ö¸ÏòÆä vtbl¡£×îºÃµÄ³õʼ»¯Î»ÖþÍÊÇÔÚÀàµÄ¹¹Ô캯ÊýÖС£ÊÂʵÉÏ£¬ÔÚ¹¹Ô캯ÊýÖУ¬C++ ±àÒëÆ÷ÒþʽµÄ´´½¨ÁËÒ»¸ö³õʼ»¯µÄvptr¡£ÔÚ C ÓïÑÔÀïÃæ£¬ ÎÒÃDZØÐëÏÔʾµÄ³õʼ»¯vptr¡£

ÏÂÃæ¾ÍչʾһÏ£¬ÔÚ Shape µÄ¹¹Ô캯ÊýÀïÃæ£¬ÈçºÎÈ¥³õʼ»¯Õâ¸ö vptr¡£

#include "shape.h"
#include <assert.h>
// Shape µÄÐ麯Êý
static uint32_t Shape_area_(Shape const * const me);
static void Shape_draw_(Shape const * const me);
// ¹¹Ô캯Êý
void Shape_ctor(Shape * const me, int16_t x, int16_t y)
{
// Shape ÀàµÄÐé±í
static struct ShapeVtbl const vtbl =
{
&Shape_area_,
&Shape_draw_
};
me->vptr = &vtbl;
me->x = x;
me->y = y;
}

void Shape_moveBy(Shape * const me, int16_t dx, int16_t dy)
{
me->x += dx;
me->y += dy;
}

int16_t Shape_getX(Shape const * const me)
{
return me->x;
}
int16_t Shape_getY(Shape const * const me)
{
return me->y;
}
// Shape ÀàµÄÐ麯ÊýʵÏÖ
static uint32_t Shape_area_(Shape const * const me)
{
assert(0); // ÀàËÆ´¿Ð麯Êý
return 0U; // ±ÜÃ⾯¸æ
}
static void Shape_draw_(Shape const * const me)
{
assert(0); // ´¿Ð麯Êý²»Äܱ»µ÷ÓÃ
}

Shape const *largestShape (Shape const *shapes[], uint32_t nShapes)
{
Shape const *s = (Shape *)0;
uint32_t max = 0U;
uint32_t i;
for (i = 0U; i < nShapes; ++i)
{
uint32_t area = Shape_area(shapes[i]);// Ð麯Êýµ÷ÓÃ
if (area > max)
{
max = area;
s = shapes[i];
}
}
return s;
}

void drawAllShapes (Shape const *shapes[], uint32_t nShapes)
{
uint32_t i;
for (i = 0U; i < nShapes; ++i)
{
Shape_draw(shapes[i]); // Ð麯Êýµ÷ÓÃ
}
}

 

×¢ÊͱȽÏÇåÎú£¬ÕâÀï²»ÔÙ¶à×ö½âÊÍ¡£

4.3 ¼Ì³Ð vtbl ºÍ ÖØÔØ vptr

ÉÏÃæÒѾ­Ìáµ½¹ý£¬»ùÀà°üº¬ vptr£¬×ÓÀà»á×Ô¶¯¼Ì³Ð¡£µ«ÊÇ£¬vptr ÐèÒª±»×ÓÀàµÄÐé±íÖØÐ¸³Öµ¡£²¢ÇÒ£¬ÕâÒ²±ØÐë·¢ÉúÔÚ×ÓÀàµÄ¹¹Ô캯ÊýÖС£ÏÂÃæÊÇ Rectangle µÄ¹¹Ô캯Êý¡£

#include "rect.h"
#include <stdio.h>
// Rectangle Ð麯Êý
static uint32_t Rectangle_area_ (Shape const * const me);
static void Rectangle_draw_(Shape const * const me);
// ¹¹Ô캯Êý
void Rectangle_ctor (Rectangle * const me, int16_t x, int16_t y,
uint16_t width, uint16_t height)
{
static struct ShapeVtbl const vtbl =
{
&Rectangle_area_,
&Rectangle_draw_
};
Shape_ctor(&me->super, x, y); // µ÷ÓûùÀàµÄ¹¹Ô캯Êý
me->super.vptr = &vtbl; // ÖØÔØ vptr
me->width = width;
me->height = height;
}
// Rectangle's Ð麯ÊýʵÏÖ
static uint32_t Rectangle_area_ (Shape const * const me)
{
Rectangle const * const me_ = (Rectangle const *)me; //ÏÔʾµÄת»»
return (uint32_t)me_->width * (uint32_t)me_->height;
}
static void Rectangle_draw_ (Shape const * const me)
{
Rectangle const * const me_ = (Rectangle const *)me; //ÏÔʾµÄת»»
printf("Rectangle_draw_ (x=%d,y=%d,width=%d,height=%d)\n",
Shape_getX(me), Shape_getY(me), me_->width, me_->height);
}

4.4 Ð麯Êýµ÷ÓÃ

ÓÐÁËÇ°ÃæÐé±í£¨Virtual Tables£©ºÍÐéÖ¸Õ루Virtual Pointers£©µÄ»ù´¡ÊµÏÖ£¬ÐéÄâµ÷Ó㨺óÆÚ°ó¶¨£©¾Í¿ÉÒÔÓÃÏÂÃæ´úÂëʵÏÖÁË¡£

uint32_t Shape_area(Shape const * const me)
{
return (*me->vptr->area)(me);
}

Õâ¸öº¯Êý¿ÉÒԷŵ½.cÎļþÀïÃæ£¬µ«ÊÇ»á´øÀ´Ò»¸öȱµã¾ÍÊÇÿ¸öÐéÄâµ÷Óö¼ÓжîÍâµÄµ÷ÓÿªÏú¡£ÎªÁ˱ÜÃâÕâ¸öȱµã£¬Èç¹û±àÒëÆ÷Ö§³ÖÄÚÁªº¯Êý£¨C99£©¡£ÎÒÃÇ¿ÉÒ԰Ѷ¨Òå·Åµ½Í·ÎļþÀïÃæ£¬ÀàËÆÏÂÃæ£º

static inline uint32_t Shape_area (Shape const * const me)
{
return (*me->vptr->area)(me);
}

Èç¹ûÊÇÀÏÒ»µãµÄ±àÒëÆ÷£¨C89£©£¬ÎÒÃÇ¿ÉÒÔÓú꺯ÊýÀ´ÊµÏÖ£¬ÀàËÆÏÂÃæÕâÑù£º

#define Shape_area(me_) ((*(me_)->vptr->area)((me_)))

¿´Ò»ÏÂÀý×ÓÖеĵ÷ÓûúÖÆ£º

4.5 main.c

#include "rect.h"
#include "circle.h"
#include <stdio.h>
int main()
{
Rectangle r1, r2;
Circle c1, c2;
Shape const *shapes[] =
{
&c1.super,
&r2.super,
&c2.super,
&r1.super
};
Shape const *s;
// ʵÀý»¯¾ØÐζÔÏó
Rectangle_ctor(&r1, 0, 2, 10, 15);
Rectangle_ctor(&r2, -1, 3, 5, 8);
// ʵÀý»¯Ô²ÐζÔÏó
Circle_ctor(&c1, 1, -2, 12);
Circle_ctor(&c2, 1, -3, 6);
s = largestShape (shapes, sizeof(shapes) /sizeof(shapes[0]));
printf ("largetsShape s(x=%d,y=%d)\n", Shape_getX(s), Shape_getY(s));
drawAllShapes (shapes, sizeof(shapes) /sizeof(shapes[0]));
return 0;
}

Êä³ö½á¹û£º

largetsShape s(x=1,y=-2)
Circle_draw_ (x=1,y=-2,rad=12)
Rectangle_draw_ (x=-1,y=3,width=5,height=8)
Circle_draw_ (x=1,y=-3,rad=6)
Rectangle_draw_ (x=0,y=2,width=10,height=15)

5¡¢×ܽá

»¹ÊÇÄǾ仰£¬ÃæÏò¶ÔÏó±à³ÌÊÇÒ»ÖÖ·½·¨£¬²¢²»¾ÖÏÞÓÚijһÖÖ±à³ÌÓïÑÔ¡£Óà C ÓïÑÔʵÏÖ·â×°¡¢µ¥¼Ì³Ð£¬Àí½âºÍʵÏÖÆðÀ´±È½Ï¼òµ¥£¬¶à̬·´¶ø»áÉÔ΢¸´ÔÓÒ»µã£¬Èç¹û´òËã¹ã·ºµÄʹÓöà̬£¬»¹ÊÇÍÆ¼öתµ½ C++ ÓïÑÔÉÏ£¬±Ï¾¹Õâ²ã¸´ÔÓÐÔ±»Õâ¸öÓïÑÔ¸ø·â×°ÁË£¬ÄãÖ»ÐèÒª¼òµ¥µÄʹÓþÍÐÐÁË¡£µ«²¢²»´ú±í£¬C ÓïÑÔʵÏÖ²»Á˶à̬Õâ¸öÌØÐÔ¡£

Óà C ÓïÑÔʵÏÖÃæÏò¶ÔÏó±à³Ì£¬¼òֱ̫ Skr ÁË!

   
2464 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
.NET Core 3.0 Õýʽ¹«²¼£ºÐÂÌØÐÔÏêϸ½â¶Á
.NET Core²¿ÊðÖÐÄã²»Á˽âµÄ¿ò¼ÜÒÀÀµÓë¶ÀÁ¢²¿Êð
C# eventḬ̈߳²È«
¼òÎö .NET Core ¹¹³ÉÌåϵ
C#¼¼ÊõÂþ̸֮À¬»ø»ØÊÕ»úÖÆ(GC)
×îпγÌ
.NetÓ¦Óÿª·¢
C#¸ß¼¶¿ª·¢¼¼Êõ
.NET ¼Ü¹¹Éè¼ÆÓëµ÷ÊÔÓÅ»¯
ASP.NET Core Web ¿ª·¢
ASP.Net MVC¿ò¼ÜÔ­ÀíÓëÓ¦Óÿª·¢
³É¹¦°¸Àý
º½Ìì¿Æ¹¤¼¯ÍÅ×Ó¹«Ë¾ DotNetÆóÒµ¼¶Ó¦ÓÃÉè¼ÆÓ뿪·¢
ÈÕÕÕ¸Û¼¯ .NET Framewor
Éñ»ªÐÅ .NETµ¥Ôª²âÊÔ
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ