【転写】BCBにおけるクラスC#属性宣言構文の実装

15573 ワード

 
【  】goldroc    BCB    C#      
     ,  BCB—— BCB    C#      
  

     , BCB(Borland C++ Builder)。   C#     ,    。      ,     、    ,      。
BCB , 。 , 。 —— C++ , C 。 C++ Bjarne Stroustrup C++
《The C++ Programming Language》 :“ : , 。
。” C++ const
inlinetemplateenumnamespace 。 ,Bjarne Stroustrup , 。 , 。 “ ”, ? , ? ,
。 。 BCB 。 ——BCB C# BCB , —— 。 。
, 。 , 。
public __publish( ) , 。 。 CGirl, Prettiness, 030: ;1: ;23: 。
BC : CGirl.h class CGirl { public : __property int Prettiness={read=FGetPrettiness,write=FSetPrettiness}; ...//( ) private: int FPrettiness; ...//( ) int __fastcall FGetPrettiness(); void __fastcall FSetPrettiness (int vPrettiness) ...//( ) }; CGirl.cpp int __fastcall CGirl:: FGetPrettiness() { return FPrettiness; } void __fastcall CGirl:: FSetPrettiness (int vPrettiness) { if (vPrettiness<=3 && vPrettiness>=0) FPrettiness=v FPrettiness; } …… , 。 。 —— 1000
( )
, 。 , .Net ,.Net Framework 。 。 SUN Java ,
, Visual Studio 。 —— :C#,
C++.Net C# , 。 C# 。
。 C# 。 CGirl , C# : class CGirl { private int FPrettiness; public int Prettiness // { get // { return FPrettiness; } set // { if (value<=3 && value>=0) FPrettiness=value; } } } , 。 , BCB C# 。 。 —— , :#define < > [ ] , : // #define < ( 1[, 2, 3……])< > :#define WRITEN(a) cout<<a<<endl :WRITEN(" , C++ Builder"); , :cout<<" , C++ Builder"<<endl; , 。 BCB C#, :/ ## 。 1/ : 。 , 。 : #define TITLE / , C++ Builder #define TITLE , C++ Builder 2、## : 。 。 : : #define VAR(i, j) (i##j) :VAR(x, 6) , x6。 , 。 —— BCB , BCB。 , , PROPERTY 。 , 。 C# , : PROPERTY ( { get { // } set { // } } ) C# , 。 。
“ ”、“ ”、“ ”、“ ” “ ”
。 “ ” , 。 。
, : PROPERTY ( , , , get { // } , set { // } ) 。 , , 。 , : pRegion pType pName pGetMethod pSetMethod BCB , 。 , 。
FGet FSet , ( ) value( C# )。 : // pType __fastcal FGet##pName () pGetMethod // void __fastcall FSet##pName(pType value) pSetMethod : __property pType pName={read= FGet##pName ,write= FSet##pName }; , : PROPERTY(pRegion,pType,pName,pGetMethod,pSetMethod) / private: / pType FGet##pName () / pGetMethod / void FSet##pName (pType value) / pSetMethod / pRegion: / __property pType pName={ / read=FGet ##pName / ,write=FSet ##pName / }; : , get set , , pGetMethod pSetMethod
。 get set: #define get #define set , 。 , 、 (
, ) , 。 。 , : 1、 , get set 。 2、 get set 。 —— ////////////////////////////////////Goldroc Opus/////////////////////////////////////// // (For C++ Builder) // : C# //( ) // :PROPERTY( , , , , ) // : PROPERTY_READONLY( , , , ) // : PROPERTY_WRITEONLY( , , , ) // :PROPERTY_DIRECT_READ( , , , , ) // :PROPERTY_DIRECT_READ( , , , ) // ///////////////////////////////////////////////////////////////////////////////////////// // : // private , F // private , FGet FSet // value // : int Left // PROPERTY // ( public,int,Left, // get // { // return _Left; // _ // } // , // !!! // set // { // _Left=value; // value // } // ) // // :get set ! // // int Left // PROPERTY_READONLY // ( public,int,Left, // get // { // return _Left; // _ // } // ) //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- #ifndef PROPERTY_MACROH #define PROPERTY_MACROH //--------------------------------------------------------------------------- #define get /*get*/ #define set /*set*/ #define PROPERTY(pRegion,pType,pName,pGetMethod,pSetMethod) / private: / pType FGet##pName () const / pGetMethod / void FSet##pName (const pType& value) / pSetMethod / pRegion: / __property pType pName={ / read=FGet ##pName / ,write=FSet ##pName / }; // #define PROPERTY_READONLY(pRegion,pType,pName,pGetMethod) / private: / pType FGet##pName () const / pGetMethod / pRegion: / __property pType pName={ / read=FGet ##pName / }; // #define PROPERTY_WRITEONLY(pRegion,pType,pName, pSetMethod) / private: / void FSet##pName (const pType& value) / pSetMethod / pRegion: / __property pType pName={ / write=FSet ##pName / }; // #define PROPERTY_DIRECT_READ(pRegion,pType,pName,pData,pSetMethod) / private: / void FSet##pName (const pType& value) / pSetMethod / pRegion: / __property pType pName={ / read= pData / ,write=FSet ##pName / }; // #define PROPERTY_DIRECT_READONLY(pRegion,pType,pName,pData) / pRegion: / __property pType pName={ / read= pData / }; #endif //--------------------------------------------------------------------------- ( BCB6 ) , , property_macro.h。 #include 。
, BCB C# , , 。 , BCB “C#” 。