adodbzip 类

 更新时间:2016年11月25日 16:29  点击:1325

adodbzip 类
<?php教程
/**
 * AdodbZip 1.1
 *
 * 作者:
 * Z(QQ号602000 QQ群5193883)
 *
 * 代码示例:
 * include_once 'AdodbZip.php';
 * $db = AdodbZip::init(NewADOConnection('mysql教程t'));
 * echo $db->GetOne('SELECT NOW()');
 *
 * 流程说明:
 * 1. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file不存在;则使用$extract_dir里的Adodb程序文件。
 * 2. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file存在;则比较修改时间,$extract_dir里的Adodb程序文件更新为较新的。
 * 3. 如果$extract_dir里的Adodb程序文件不存在,并且$zip_file存在;则$extract_dir里的Adodb程序文件从$zip_file解压获得。
 * 4. 如果 $extract_dir里的Adodb程序文件不存在,并且$zip_file不存在;则从$zip_url下载Adodb的Zip文件,并解压Adodb的程序文件。
 *
 * 其他说明:
 * 1. $extract_dir可自定义。如果将Adodb的Zip包完全解压到此目录,则可忽略$zip_url和$zip_file设置项,这和传统使用Adodb一样。
 * 2. $zip_file可自定义。如果$zip_file存在,则可忽略$zip_url,这样可整站统一使用$zip_file。
 * 3. $zip_url可自定义。可随时修改Adodb版本,此时$zip_file和$extract_dir最好使用默认值,各版本互不干扰。
 * 4. $server、$user、$pwd、$db可自定义。默认是mysql默认值,此项只有调用AdodbZip::init方法后才起效果。
 * 5. $charset可自定义。默认不改变编码,此项只有调用AdodbZip::init方法后才起效果。
 * 6. AdodbZip::init方法里可增加Adodb初始化值。
 */

/**
 * AdodbZip启动项
 */
// 设定参数
AdodbZip::$zip_url = 'http://c.net教程works-kr-1.dl.sourceforge.net/project/adodb/adodb-php5-only/adodb-509-for-php5/adodb509.zip'; //[设置项]Adodb的Zip文件下载地址,文件比较大建议先下载或者解压
AdodbZip::$zip_file = sys_get_temp_dir () . preg_replace ( '/^.*/(adodb.*?.zip)$/i', 'adodb/$1', AdodbZip::$zip_url ); //[设置项]Adodb的Zip文件缓存位置
AdodbZip::$entry_dir = 'adodb5';
AdodbZip::$extract_dir = sys_get_temp_dir () . 'adodb/' . AdodbZip::$entry_dir; //[设置项]Adodb程序文件缓存位置
AdodbZip::$server = 'localhost'; //[设置项]服务器 
AdodbZip::$user = 'root'; //[设置项]用户名
AdodbZip::$pwd = ''; //[设置项]密码
AdodbZip::$db = 'test'; //[设置项]数据库教程
AdodbZip::$charset = ''; //[设置项]编码


// 注册协议
if (! in_array ( 'AdodbZip', stream_get_wrappers () )) {
 stream_wrapper_register ( 'AdodbZip', 'AdodbZip' );
}
// 定义常量
if (! defined ( 'ADODB_DIR' )) {
 define ( 'ADODB_DIR', 'AdodbZip:/' );
}
// 包含程序
require_once (ADODB_DIR . '/adodb.inc.php');
// $db = AdodbZip::init(NewADOConnection('mysqlt')); // [选择项]引用即定义$db
// return AdodbZip::init(NewADOConnection('mysqlt')); // [选择项]引用即返回$db,注意只可引用一次。


/**
 * AdodbZip类定义
 */
class AdodbZip {
 
 /**
  * Adodb变量
  */
 public static $zip_url;
 public static $zip_file;
 public static $entry_dir;
 public static $extract_dir;
 public static $server;
 public static $user;
 public static $pwd;
 public static $db;
 public static $charset;
 
 /**
  * Stream变量
  */
 private $handle;
 public $context;
 
 /**
  * Adodb函数组
  */
 
 /**
  * init
  * @param adodb &$adodb
  * @return adodb
  */
 public static function init(&$adodb) {
  $adodb->Connect ( self::$server, self::$user, self::$pwd, self::$db );
  if(self::$charset!=''){
   $adodb->Execute('SET NAMES '.self::$charset.';');
  }
  return $adodb;
 }
 
 /**
  * Stream函数组
  */
 
 /**
  * __construct
  */
 public function __construct() {
 }
 
 /**
  * stream_cast
  * @param int $cast_as
  * @return resource
  */
 public function stream_cast($cast_as) {
  return false;
 }
 
 /**
  * stream_close
  */
 public function stream_close() {
  fclose ( $this->handle );
 }
 
 /**
  * stream_eof
  * @return bool
  */
 public function stream_eof() {
  return feof ( $this->handle );
 }
 
 /**
  * stream_flush
  * @return bool
  */
 public function stream_flush() {
  return fflush ( $this->handle );
 }
 
 /**
  * stream_lock
  * @param mode $options
  * @return bool
  */
 public function stream_lock($options) {
  return flock ( $this->handle, $options );
 }
 
 /**
  * stream_open
  * @param string $path
  * @param string $mode
  * @param int $options
  * @param string &$opend_path
  * @return bool
  */
 public function stream_open($path, $mode, $options, &$opend_path) {
  // 验证文件地址
  if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
   return false;
  }
  $tmp_file = self::$extract_dir . DIRECTORY_SEPARATOR . $matches [1];
  $entry_file = self::$entry_dir . '/' . str_replace ( '\', '/', $matches [1] );
  $zip_file = self::$zip_file;
  // 验证程序文件
  if (! file_exists ( $tmp_file ) || file_exists ( $zip_file ) && filectime ( $tmp_file ) < filectime ( $zip_file )) {
   // 下载文件
   if (! file_exists ( $zip_file )) {
    // 目录处理
    if (! is_dir ( dirname ( self::$zip_file ) )) {
     if (mkdir ( dirname ( self::$zip_file ), 0777, true ) === false) {
      header ( 'Content-type: text/html;charset=utf-8' );
      die ( '请创建目录 ' . $zip_dir );
     }
    }
    // 下载文件
    if (! file_exists ( self::$zip_file )) {
     $break = true;
     do {
      $url_arr = parse_url ( self::$zip_url );
      $fp = fsockopen ( $url_arr ['host'], isset ( $url_arr ['port'] ) ? ( int ) $url_arr ['port'] : 80, $errno, $errstr, 10 );
      if ($fp === false) {
       break;
      }
      $out = "GET " . $url_arr ['path'] . " HTTP/1.0rnHost: " . $url_arr ['host'] . " rnConnection: closernrn";
      fputs ( $fp, $out );
      if (feof ( $fp )) {
       break;
      }
      $buffer = fgets ( $fp, 1024 );
      if (! preg_match ( '/^HTTP/1.d 200 /i', $buffer )) {
       break;
      }
      $content_length = false;
      $content_start = false;
      while ( ! feof ( $fp ) ) {
       $buffer = fgets ( $fp, 1024 );
       if ($buffer === "rn") {
        $content_start = true;
        break;
       }
       if (preg_match ( '/^Content-Length:s*(d+)/i', $buffer, $matches )) {
        $content_length = ( int ) $matches [1];
       }
      }
      if ($content_length === false || $content_start === false) {
       break;
      }
      $content = stream_get_contents ( $fp );
      if ($content === false) {
       break;
      }
      $result = file_put_contents ( self::$zip_file, $content );
      unset ( $content );
      if ($result === false) {
       break;
      }
      fclose ( $fp );
     } while ( $break = false );
     if ($break) {
      header ( 'Content-type: text/html;charset=utf-8' );
      die ( '请下载文件 <a href="' . self::$zip_url . '">' . self::$zip_url . '.zip</a > 保存为 ' . self::$zip_file );
     }
    }
   }
   // 创建目录
   $tmp_dir = dirname ( $tmp_file );
   if (! is_dir ( $tmp_dir )) {
    if (mkdir ( $tmp_dir, 0777, true ) === false) {
     header ( 'Content-type: text/html;charset=utf-8' );
     die ( '请创建目录 ' . $tmp_dir );
    }
   }
   // 打开压缩文件
   $zip = zip_open ( $zip_file );
   if (! is_resource ( $zip )) {
    return false;
   }
   // 寻找解压文件
   do {
    $entry = zip_read ( $zip );
    if (! is_resource ( $entry )) {
     return false;
    }
    if (zip_entry_name ( $entry ) == $entry_file) {
     break;
    }
   } while ( true );
   // 转存压缩文件
   zip_entry_open ( $zip, $entry );
   file_put_contents ( $tmp_file, zip_entry_read ( $entry, zip_entry_filesize ( $entry ) ) );
   zip_entry_close ( $entry );
   zip_close ( $zip );
  }
  // 打开文件
  $this->handle = fopen ( $tmp_file, $mode );
  if (! is_resource ( $this->handle )) {
   return false;
  }
  return true;
 }
 
 /**
  * stream_read
  * @param int $count
  * @return string
  */
 public function stream_read($count) {
  return fread ( $this->handle, $count );
 }
 
 /**
  * stream_seek
  * @param int $offset
  * @param int $whence=SEEK_SET
  * @return bool
  */
 public function stream_seek($offset, $whence = SEEK_SET) {
  return fseek ( $this->handle, $offset, $whence );
 }
 
 /**
  * stream_set_option
  * @param int $option
  * @param int $arg1
  * @param int $arg2
  * @return bool
  */
 public function stream_set_option($option, $arg1, $arg2) {
  return false;
 }
 
 /**
  * stream_stat
  * @return array
  */
 public function stream_stat() {
  return fstat ( $this->handle );
 }
 
 /**
  * stream_tell
  * @return int
  */
 public function stream_tell() {
  return ftell ( $this->handle );
 }
 
 /**
  * stream_write
  * @param string $data
  * @return int
  */
 public function stream_write($data) {
  return fwrite ( $this->handle, $data );
 }
 
 /**
  * url_stat
  * @param string $path
  * @param int $flag
  * @return array
  */
 public function url_stat($path, $flag) {
  if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
   return false;
  }
  $tmp_file = self::$extract_dir . DIRECTORY_SEPARATOR . $matches [1];
  if (file_exists ( $tmp_file )) {
   if ($flag & STREAM_URL_STAT_LINK) {
    return lstat ( $tmp_file );
   } else {
    return stat ( $tmp_file );
   }
  }
  if ($flag & STREAM_URL_STAT_QUIET) {
   $arr = array ('dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0 );
   return array_merge ( array_values ( $arr ), $arr );
  }
  return false;
 }
}
?>
直接样例view sourceprint?1 <?php 

2 include_once 'AdodbZip.php'; 

3 $db = AdodbZip::init(NewADOConnection('mysqlt')); 

4 echo $db->GetOne('SELECT NOW()'); 

5 ?>
也是两步。
1. 包含AdodbZip.php文件
2. AdodbZip::init(...)函数对adodb连接类进行初始化。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>电话号码 手机号码 正则表达式实例</title>
</head>

<body>
<form id="111cnNet" name="111cnNet" method="post" action="">

<input name="url" type="text"  />
<input name="" type="submit"   value="提交 "/>
</form>

输入13875998850
输出有效联系方式

输入0136986+9557
输出 联系方式有问题
</body>
</html>
<?
function funcPhone($str)//电话号码正则表达试
  {
   return (preg_match("/^(((d{3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,8}$/",$str))?true:false;
  }    
 
 function funcMtel($str)//手机号码正则表达试
 {
  return (preg_match("/(?:13d{1}|15[03689])d{8}$/",$str))?true:false;
 }


if( $_POST)
{
 if( funcPhone( $_POST['url'] )  || funcMtel( $_POST['url'] ) )
 {
  echo '有效联系方式';
 }
 else
 {
  exit('联系方式有问题');
 }
}
?>

<html>
<title>查百度—百度网站权重SEO工具查询</title>
<meta http-equiv=Content-Language content=zh-cn>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name=keywords content="百度关键字,关键字排名,关键字查询">
<meta name="description" content="百度关键字查询系统的主要功能是:查询百度搜索引擎教程某个关键字的搜索结果中是否包含您的网页,并且能够查询出您的网页排在第几页.">
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow" />

<style type="text/css教程">
<!--
.STYLE1 {color: #666666}
.STYLE3 {font-size: 12px}
.STYLE6 {color: #0000FF}
.STYLE7 {color: #333333}
-->
</style>

<script language="JavaScript">
function check_value()
{
 if (document.myform.kw.value=="")
 {
  alert("对不起,关键字不能为空!");
  document.myform.kw.focus();
  return false;
 } 
 
 if (document.myform.url.value=="")
 {
  alert("对不起,网址不能为空!");
  document.myform.url.focus();
  return false;
 } 

}
</script> 


<body>


<H1>百度网站权重(SEO)查询工具</H1>
<br>
<form id="myform" name="myform" method="get" action="so.php教程" target="_blank" onSubmit="return check_value();">
  <label>请输入关键字:
  <input name="kw" type="text" size="30" />
  </label>
  <p>
    <label>请输入网址:&nbsp;&nbsp;
    <input name="url" type="text" size="30" />
    </label>
 <br>
 <span class="STYLE1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>

    <p>
 <label>查询深度:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 <input type="text" name="depth" size="30" />
 </label>
 <br>
 <span class="STYLE1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="STYLE3">查询深度指的是要查询的总页数,默认为10页度</span></span></p>
    <p>
    <label>
    <input type="submit" name="Submit" value="查询我网站的权重" />
    </label>
  </p>
</form>

<h5>
  <span class="STYLE7 STYLE3">百度关键字查询系统的主要功能是:查询百度搜索引擎某个关键字的搜<br>
索结果中是否包含您的网页,并且能够查询出您的的网页排在第几页.如果排名较差可以考虑适当的再忧化一下您的网站了。<br>
  </span><br>
  近日将会推出站长和百度的更多实用功能,敬请关注!
</h5>

 


</body>

</html>
//php处理代码

<?php

function get_microtime()
{
 list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

$time_start = get_microtime();
set_time_limit(0);
$kw=$_GET["kw"];
$url=$_GET["url"];
$depth=$_GET["depth"];
$next=1;$pn=0;$flag=0;$n=1;$ps教程=0;
$baseurl="http://www.baidu.com/s?";
$kw=str_replace("+","%2B",$kw);
$kw=str_replace(" ","%20",$kw);

if($depth==""||$depth<=0) $depth=10;
if($depth>76) $depth=76;

echo "<title>百度网站关键字权重查询 -- ".$kw."</title>";
echo "<H2>百度网站关键字权重查询结果</H2>";
//echo "<br>";
echo "<br>查询深度为:<strong>".$depth."</strong><br>";

while($next==1)

 $baidu_url=$baseurl."lm=0&si=&rn=10&tn=wangcong&ie=gb2312&ct=0&wd=".$kw."&pn=".$pn."&cl=3";
 $str=file_get_contents($baidu_url);
 $baidu_url=str_replace("%20","+",$baidu_url);
 
 if(strpos($str,$url))
 {
  if($n==1) echo "在百度中查找关键字:'<strong>".$kw."</strong>',来自'<strong>".$url."</strong>'的结果有:<br><br>";  
  $pagenum=$pn/10+1;
  echo "<br>&nbsp;&nbsp;第".$n."条结果,   ";
  echo "在百度搜索结果中排在第".$pagenum."页";
  echo "<br>";
  echo "&nbsp;&nbsp;<a href=".$baidu_url." target=blank>点此查看</a>";  
  echo "<br><br>";  
  $flag=1;
  $n=$n+1;
 }
 
 $pn=$pn+10; 
 $ps=$ps+1;
 if($ps==$depth) $next=0;
 if(!strpos($str,"<font size=3>下一页</font>")) $next=0;  //判断有没有下一页;
}

$time_end = get_microtime();
$time = $time_end - $time_start;
if($flag==0) echo "<br>在当前的深度条件下没有找到来自 <strong>".$url."</strong> 的结果,您的忧化还有待进步,您可以尝试加大查询深度.<br><br>";

$n=$n-1;
echo "<br><strong>统计信息:</strong>一共找了".$ps."页,找到".$n."条相关结果,耗时:".$time."秒.<br><br><br>";
?>

mysql教程_connect('localhost','root','root') or die('database connect failer');
mysql_select_db('m');
mysql_query("set Names 'gb2312'");


$sql = "Select aid,introduce from d_addonsoft order by aid desc limit 0,2";
$query = mysql_query( $sql );
while( $rs = mysql_fetch_array( $query ) )
{
 $body = keywords($rs['introduce'],$array);
 $s ="Update d_addonsoft set introduce ='$body' where aid=".$rs['aid'];
 mysql_query($s);
 echo $body,'<br />';
}

$array = array(
 array('aa','/bb/'),
 array('cc','111cnnet')
);
$str ='bb 矢量 cc 矢量素材';
echo keywords($str,$array);
function keywords( $str,$array )
{
 $count =0;
 foreach($array as $v){ 
  echo $v[0],'<br/>';   
  if(strstr($str,$v[0])!==false){       
   if( $count <=2 ){
    $str=preg_replace("/$v[0]/","<a href=".$v[1]." target=_blank >".$v[0]."</a>",$str,1);
    $count++;
    continue;
   }
  }    
 }
 return $str;  
}
?>

class newFold{
 var $upload_dir=date("Y/m/d");
 if(!is_dir($this->upload_dir)){
  $this->mkdir_r($this->upload_dir,0777);
 }

 function mkdir_r($dirName, $rights=0777){
  $dirs = explode('/', $dirName);
  $dir='';
  foreach ($dirs as $part) {
   $dir.=$part.'/';
   if (!is_dir($dir) && strlen($dir)>0)
    mkdir($dir, $rights);
  }
 }
}

// 使用方法

$files = new newFold();

本站原创www.111cn.net

[!--infotagslink--]

相关文章

  • php svn操作类

    以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23
  • mybatis-plus实体类主键策略有3种(小结)

    这篇文章主要介绍了mybatis-plus实体类主键策略有3种(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-27
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • C#类中static变量用法分析

    这篇文章主要介绍了C#类中static变量用法,实例分析了static变量使用技巧与相关注意事项,需要的朋友可以参考下...2020-06-25
  • PHP 一个完整的分页类(附源码)

    在php中要实现分页比起asp中要简单很多了,我们核心就是直接获取当前页面然后判断每页多少再到数据库中利用limit就可以实现分页查询了,下面我来详细介绍分页类实现程序...2016-11-25
  • c#各种Timer类的区别与用法介绍

    System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务。在必须更新用户界面的情况下,建议不要使用该计时器,因为它的回调不在用户界面线程上发生...2020-06-25
  • C#学习笔记整理_浅谈Math类的方法

    下面小编就为大家带来一篇C#学习笔记整理_浅谈Math类的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 详解ES6实现类的私有变量的几种写法

    这篇文章主要介绍了详解ES6实现类的私有变量的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • ES5和ES6中类的区别总结

    这篇文章主要给大家介绍了ES5和ES6中类的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-21
  • Java匿名内部类的写法示例

    这篇文章主要给大家介绍了关于Java匿名内部类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
  • php无限分类使用concat如何实现

    一、数据库设计 -- -- Table structure for table `category` -- CREATE TABLE `category` ( `id` int(11) NOT NULL auto_increment, `catpath` varchar(255) default NULL, `name` varchar(255) default NULL...2015-11-08
  • 适用于初学者的简易PHP文件上传类

    本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:<&#63;phpclass Test_Upload{ protected $_uploaded = array(); protected $_destination; protected $_max = 1024000; protected $_messages =...2015-10-30
  • JPA如何使用nativequery多表关联查询返回自定义实体类

    这篇文章主要介绍了JPA如何使用nativequery多表关联查询返回自定义实体类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-11-18
  • 浅谈C#中Process类的使用详解

    本篇文章是对C#中Process类的使用进行了详细的分析介绍,需要的朋友参考下...2020-06-25
  • 轻松学习C#的结构和类

    轻松学习C#的结构和类,对C#的结构和类感兴趣的朋友可以参考本篇文章,帮助大家更灵活的运用C#的结构和类。...2020-06-25