结构体
/*
* 结构:可以帮助我们一次性声明多个不同类型的变量
* 语法:
* [public] struct 结构名
* {
* 结构体成员;//字段
* }
*
*
*/
public struct Person
{
//构造方法(不能使用无参的构造方法)
//public Person()
//{
//}
//只能声明有参数的构造方法
public Person(string name,int age,Gender gender)
{
this._name = name;
this._age = age;
this._gender = gender;
}
public string _name; //定义的成员变量不能赋初值
public int _age;
public Gender _gender;
public void SayHello()
{
Console.WriteLine("你好{0}",this._name);
}
}
public enum Gender
{
男,
女
}
class Program
{
static void Main(string[] args)
{
Person zsPerson; //定义结构可以不用new
zsPerson._name = "张三"; //为结构成员赋值
zsPerson._age = 18;
zsPerson._gender = Gender.男;
Change(zsPerson);//值类型
Console.WriteLine(zsPerson._name);
zsPerson.SayHello();
Person lsPerson;
lsPerson._name = "李四";
lsPerson._age = 19;
lsPerson._gender = Gender.女;
Console.WriteLine(lsPerson._name);
lsPerson.SayHello();
//使用带有参数构造方法的方式定义结构
Person wwPerson = new Person("王五",18,Gender.女);
Console.WriteLine(wwPerson._name);
wwPerson.SayHello();
Console.ReadKey();
}
public static void Change(Person p)
{
p._name = "张三丰";
p._age = 19;
}
}
访问私有成员属性
/*
* 定义属性的语法:
* 访问修饰符 数据类型 属性名
* {
* get{ 返回私有成员变量;}
* set{设置私有成员变量;}
* }
*
*/
class Person
{
//三个字段
private string _name;
public string Name
{
//当你输出属性的值的时候,会执行get方法
get { return _name; }
//当你给属性赋值的时候,首先会执行set方法
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set
{
if (value < 0 || value > 100)
{
value = 0;
}
_age = value;
}
}
private char _gender;
public char Gender
{
get
{
if (_gender != '男' && _gender != '女')
{
return _gender = '男';
}
return _gender;
}
set { _gender = value; }
}
public void CHLSS()
{
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生,我可以吃喝拉撒睡哟~~~~", this.Name, this.Age, this.Gender);
}
}
class Program
{
static void Main(string[] args)
{
//创建Person类的对象
Person zhangsan = new Person();
zhangsan.Name = "张三";
zhangsan.Age = -19;
zhangsan.Gender = '东';
zhangsan.CHLSS();
Console.ReadKey();
}
}
索引器
/*
* 索引器的语法:
* [访问修饰符] 数据类型 this [数据类型 标识符]{
* get{}
* set{}
*
* }
*
*
*/
class Program
{
static void Main(string[] args)
{
Student s = new Student();
//“=”号右边对索引器赋值,其实就是调用其set方法
s[0] = "张三";
s[1] = "李四";
//输出索引器的值,其实就是调用其get方法
Console.WriteLine(s[0]);
Console.WriteLine(s[1]);
Console.WriteLine("------------------------------");
Person p = new Person();
//p.Numbers = new int[] { 10, 20, 30 ,40,50};
//for(int i = 0; i < p.Numbers.Length; i++)
//{
// Console.WriteLine(p.Numbers[i]);
//}
p[0] = 1;
p[1] = 2;
Console.WriteLine(p[0]);
Console.WriteLine(p[1]);
Console.ReadKey();
}
}
class Student
{
private string[] name = new string[10];
//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
public string this[int index]
{
get
{
return name[index];
}
set
{
name[index] = value;
}
}
}
class Person
{
private int[] numbers = new int[5];
public int[] Numbers
{
get
{
return numbers;
}
set
{
numbers = value;
}
}
public int this[int index]
{
get
{
return numbers[index];
}
set
{
numbers[index] = value;
}
}
}
网友评论