C#中的结构用法

时间:2021-02-11 14:55:59

结构结构的关键字 struct,struct类型是一种值类型通常用来封装小型变量组,如果冲结构创建一个对象并将对象赋给某个变量 则变量包含结构该变量放入结构的全部值,如果复制包含变量的结构,则将该复制所有的值,对新副本所作的任何修改都不会改变就副本的值(值类型的复制,自复制给其他的值,改变原来结构的值)

结构的特点:结构不是引用类型,而是值类型。结构的实例化不能用new运算符。结构可以声明构造函数但是必须带参数的结构。结构不能从另外一个结构或类来继承,而且不能作为一个类的基类。结构可以作为null的类型,因而可向其符null值。

结构的声明

Struct Mystr

{

 

}

结构的访问修饰符可以是public,internal,默认修饰符为internal

结构中的成员访问修饰符可以是privatepublic但不可以是protect(结构体不能别继承,只能连接接口),调用结果只能是public才能调用

结构化实例两种方式

Struct Mystr

{

Public int i;

}

Main方法中调用

{

   Mystr ms=new Mystr;

              ms.i=10;

 

Mystr  mt;

mt.i=100;

}

  struct Person

        {

            public int Age

            {

                get;   set;

            }

            public string Name

            {

                get;   set;

            }

            public bool Sex

            {

                get;set;

            }

            public void Eat(string name)

            {

                Console.WriteLine("今天吃的{0}", name);

            }

        }

Main方法中调用

 

            Person p = new Person();//调用结构的中字段

            p.Name = "老桂";

            p.Age = 12;

            p.Eat("");

            p.Sex = true;

           

            Console.WriteLine(p.Name);

            Console.WriteLine(p.Age);

            Console.WriteLine(p.Sex);

            Console.WriteLine(I);

              结果为 :Name=老桂,Age=12今天吃的Sex=true

            从另外一个结构复制结构中的字段并且重新Name字段赋值

            Person ap = p;

            ap.Name = "小鬼";

            Console.WriteLine(ap.Sex);

            Console.WriteLine(ap.Name);

            Console.WriteLine(ap.Age);

            ap.Eat("fanaaaaaf");

                            结果为:Name=小鬼,Sex=trueAge=12,今天吃的fanaaaaaf

 

字段:

普通字段:如果有构造函数,必需在构造函数中初始化,如果没有构造函数,字段则自动初始化。

静态字段:常量字段不需要在构造函数中初始化。

结构中,静态字段和常量必需用结构名来调用。

(属性也是变量)

例:

   struct Person

        {

           public  const string  str = "100aaaaaaaaa";

            public  static int Age

            {

                get; set;

            }

       }

 

 Console.WriteLine(Person .Age );

            Console.WriteLine(Person .str );