/C#中的属性:一种是在公共语言运行库的基类中定义的属性
//另一种是自己创建,可以向代码中添加附加信息的自定义属性
//自定义属性的声明方法:
//指定属性的访问级别---属性的类型---属性的名称---声明get访问器(或)set访问器的代码模块
/*
*属性定义的语法格式
*
*访问修饰符 数据类型 属性名
*{
* get
* {
* return 变量名;
* }
* set
* {
* 变量名 = value ;
* }
*}
*
*关于房屋内修饰符的说明
*
*private-----访问仅限制在声明它的类型的内部
* -----派生类也不能访问积累的private属性
*protected ----可以被其所在类的实列(非继承)访问
* ----也可以杯同一程序集中的任何派生类访问
*public ----不限制
*internal---访问仅仅现在在当前的程序集合中
* ---派生类位于同一个程序集合中可以访问基类的internal属性
*/
//方法
//方法是包含一系列语句的代码块,每个执行指令都是在方法的上下文中完成的
//方法声明包含private,public protected,internal
//还包含new,static, virtual,override,sealed,abstract,extern
/*
* 方法的参数类型
* 调用方法时可以给方法传递一个或多个值,传给方法的值叫做实参
* 在方法内部接收实参的变量叫做形参,形参在紧跟着方法名的括号中声明
* 声明方法参数时,可以通过关键字params,ref和out实现
* 1:params参数用来指定在参数数目可变时采用的方法参数,params参数必须是一维数组
* */
//ref参数
//ref参数使方法参数按引用传递,其效果是:当控制权传递回调用方法时,在方法中对参数
//所作的任何更改都将反映在该变量中,如果要使用ref参数,则方法声明和调用方法都必须
//显式使用ref关键字
//out参数
//out关键字用来定义输出参数,它会导致参数通过引用来传递,这与ref参数类似,不同之处在于
//ref要求变量必须在传递之前进行初始化,而使用out关键字定义的参数,不用进行初始化
//即可使用,如果要使用out参数,则方法声明和调用方法都必须显式使用out关键字
cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//C#中的属性:一种是在公共语言运行库的基类中定义的属性
//另一种是自己创建,可以向代码中添加附加信息的自定义属性
//自定义属性的声明方法:
//指定属性的访问级别---属性的类型---属性的名称---声明get访问器(或)set访问器的代码模块
/*
*属性定义的语法格式
*
*访问修饰符 数据类型 属性名
*{
* get
* {
* return 变量名;
* }
* set
* {
* 变量名 = value ;
* }
*}
*
*关于房屋内修饰符的说明
*
*private-----访问仅限制在声明它的类型的内部
* -----派生类也不能访问积累的private属性
*protected ----可以被其所在类的实列(非继承)访问
* ----也可以杯同一程序集中的任何派生类访问
*public ----不限制
*internal---访问仅仅现在在当前的程序集合中
* ---派生类位于同一个程序集合中可以访问基类的internal属性
*/
namespace AttributeAndMethodDemo1
{
class MyClass
{
private string id = "";
private string name = "";
//属性的声明
public string ID //定义用户编号属性,该属性可读可写
{
get
{
return id;
}
set
{
id = value;
}
}
public string Name //星期属性,可读可写
//Name只是一个代码,其他的也可以,为了便于阅读,可以用有意义的单词
{
get
{
return name;
}
set
{
name = value;
}
}
//Params方法
//params参数用来指定在参数数目可变时,采用的方法参数,params参数必须是一维数组
public void UseParams(params string[] list)
{
for(int i= 0; i<list.Length; i++)
{
Console.Write(list[i]+ " ");
}
}
//ref参数
//ref参数使方法参数按引用传递,其效果是:当控制权传递回调用方法时,在方法中对参数
//所作的任何更改都将反映在该变量中,如果要使用ref参数,则方法声明和调用方法都必须
//显式使用ref关键字
public void RefMethod(ref int i)
{
i = 100;
}
//out参数
//out关键字用来定义输出参数,它会导致参数通过引用来传递,这与ref参数类似,不同之处在于
//ref要求变量必须在传递之前进行初始化,而使用out关键字定义的参数,不用进行初始化
//即可使用,如果要使用out参数,则方法声明和调用方法都必须显式使用out关键字
public void OutMethod(out int m)
{
m = 200;
}
//方法的分类
//方法分成:静态方法和非静态方法
//static修饰的为静态方法
public static int Add(int i, int j)
{
return i + j;
}
//方法的重载
//定义:指方法名称相同,但参数的数据类型、个数或顺序不同的方法
public static double Add(double x, double y)
{
return x + y;
}
public int Add( int m, int n, int l)
{
return m + n + l;
}
}
//属性的使用
// 对象名称.属性名
//方法
//方法是包含一系列语句的代码块,每个执行指令都是在方法的上下文中完成的
//方法声明包含private,public protected,internal
//还包含new,static, virtual,override,sealed,abstract,extern
/*
* 方法的参数类型
* 调用方法时可以给方法传递一个或多个值,传给方法的值叫做实参
* 在方法内部接收实参的变量叫做形参,形参在紧跟着方法名的括号中声明
* 声明方法参数时,可以通过关键字params,ref和out实现
* 1:params参数用来指定在参数数目可变时采用的方法参数,params参数必须是一维数组
* */
internal class Program
{
//Main方法的默认访问级别为private
static void Main(string[] args)
{
MyClass mc = new MyClass();
mc.ID = "DYJ";
mc.Name = "DENG";
Console.WriteLine(mc.Name);
string[] arrayStr = new string[] {"11","22","33","44","55" };
mc.UseParams(arrayStr);
Console.WriteLine();
int x = 50;
//调用方法之前X的值
Console.WriteLine("调用ref方法之前X的值为:");
Console.WriteLine(x);
//调用ref方法
mc.RefMethod(ref x); //必须和ref关键字一起传递
Console.WriteLine("调用了ref犯法之后的X的值为:");
Console.WriteLine(x);
int out_param;
mc.OutMethod(out out_param);
Console.WriteLine("调用了out参数方法之后的out_param的值为:" + out_param);
Console.WriteLine();
//调用静态方法
Console.WriteLine("调用MyClass的静态方法:Add,结果为:{0}",MyClass.Add(100, 200));
Console.WriteLine("方法重载1:" + mc.Add(100,200,300));
Console.WriteLine("方法重载1:" + MyClass.Add(10.5, 12.5));
}
}
}