【転写】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 ,
inline、template、enum、namespace 。
,Bjarne Stroustrup , 。 , 。
“ ”, ? , ? ,
。 。
BCB 。
——BCB C#
BCB , —— 。 。
, 。 , 。
public __publish( ) , 。
。
CGirl, Prettiness, 0—3。0: ;1: ;2: 3: 。
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#” 。