徐磊ID:xiaolei1982
29978次访问,排名3692好友4人,关注者91
热爱足球,篮球,台球等各项体育运动;
xiaolei1982的文章
原创 38 篇
翻译 0 篇
转载 38 篇
评论 21 篇
xiaolei1982的公告
这两天总结了一些东西,写得有点乱,里面有很多是自己认为的,所以会有不对的地方,希望阅读的朋友如果看到有错误的话请给予指出,以免误人子弟。
最近评论
dupeng0811:学习……学习……
xiaolei1982:粘贴就可运行,大家可以看看效果
dupeng0811:学习……学习……
xiaolei1982:我真服气csdn了怎么再保存一遍成这个样了,
要改都没法改,
增加一点对于该模板类,还可以 $html->expandir('FILAS', '+filas');
也就是当循环的时候多条输出,
同时可以利用php文件的
fsockopen来抓取远程地址;
以上留言本来自gbookmx
klwkk:能否发给vsprinter控件给我,非常感谢 klwkk@sohu.com
文章分类
收藏
    相册
    我的相册
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 C# 值类型与类的不同收藏

    新一篇: jsp页面传递 | 旧一篇: c# 反射的用法

    关于值类型和引用类型的区别网上很多,今天稍微总结一下,概念性的东西大体一说,C#的所有值类型均隐式派生自System.ValueType,需要注意System.ValueType确是一种引用类型,并且继承System.Object,而所有的引用类型均继承System.Object,值类型存储在堆栈上而引用类型处处在托管堆。
    我这里介绍的值类型是大家平常不太关注的地方。
    首先我们需要知道的是每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
    比如int i = new int()<==> Int32 i = new Int32() <==> int i = 0<==>Int32 i = 0;
    使用new运算符时,将调用特定类型的默认构造函数并对变量赋以默认值.
    这里需要注意的是struct的new操作是不执行分配内存操作的(与class的new不同),
    其new操作只执行初始化数据操作。
    看一个例子
    int i = new int();
    Console.WriteLine(i);
    然而,下面的代码却导致了编译器错误 CS0165,因为它没有使用 new,而且试图使用尚未初始化的对象:
    int i;
    Console.WriteLine(i);
    再看
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace fanxing
    {
        
    public struct Address
        
    {
            
    private string _city;
            
    private string _province;
            
    private int _zipCode;
           
            
    //private int _zipCode=0;结构中不能有实例字段初始值设定

            
    public Address(string city, string province, int zipCode)
            
    {
                _city 
    = city;
                _province 
    = province;
                _zipCode 
    = zipCode;
          
            }


            
    /*public Address(string city, string province)
            {
                _city = city;
                _province = province;
            }如果建立有参构造函数,必须对所有的域字段全部复制
    */



            
    //public Address()
            
    //{
            
    //会提示结构不能包含显示无参数构造函数
            
    //}

            
    public string City
            
    {
                
    get return _city; }
            }

            
    public string Province
            
    {
                
    get return _province; }
            }

            
    public int ZipCode
            
    {
                
    get return _zipCode; }
            }

        }


        
    public class Address1
        
    {
            
    private string _city;
            
    private string _province;
            
    //private int _zipCode;
            private int _zipCode = 0;
            
    public static int aaa=8;

            
    static  Address1()
            
    {
                aaa 
    = 10;
                Console.Write(aaa);
            }


            
    public Address1()
            
    {

            }


           
    public Address1(string city, string province)
            
    {
                _city 
    = city;
                _province 
    = province;
                aaa 
    = 20;
                Console.Write(aaa);
            }


            
    public string City
            
    {
                
    get return _city; }
            }

            
    public string Province
            
    {
                
    get return _province; }
            }

            
    public int ZipCode
            
    {
                
    get return _zipCode; }
            }

        }


        
    class Application1234
        
    {
            
    static void Main(string[] args)
            
    {
                Address a;
                
    //int i;
                
    //Console.WriteLine(i);
                
    //Console.Write(a.ZipCode);//如果没有new,就会提示使用了未赋值的局部变量a
                a = new Address();
                
    //Console.Write(a.City + a.ZipCode);//null + 0 

                Console.Write(Address1.aaa);
                
    //在这里特意介绍下static构造函数的用法,
                
    //不管是实例化还是调用静态变量,静态构造函数只调用一次,并且它先于非静态构造函数前调用。
                Address1 b = new Address1("a","b");
                
    //Console.Write(b.City + b.ZipCode);//null + 0 
                Console.Read();
            }

        }

    }

    同样道理作为struct来讲,必须通过new进行初始化,但是 structs 不能包含显式默认构造函数,因为编译器将自动提供一个构造函数。此构造函数会将 struct 中的每个字段初始化为默认值(默认情况下,不管是类还是在结构当中CLR会自动将值类型设为0,引用类型默认为null),只有当 structnew 实例化时,才会调用此默认构造函数。

    接下来注意这个问题:基于 structs 的对象(包括所有内置数值类型)可以初始化或赋值后使用,如下面的示例所示:
    int a = 44;  // Initialize the value type...
    int b;
    = 33;      // Or assign it before using it.
    Console.WriteLine("{0}, {1}", a, b);
    也就是说对值类型调用默认构造函数不是必需的。

    发表于 @ 2008年05月08日 14:52:00|评论(loading...)|编辑

    新一篇: jsp页面传递 | 旧一篇: c# 反射的用法

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © xiaolei1982