标签:style http color 使用 os 数据 ar 代码
默认时,值类型是按值传递给方法的,也就是说当值对象传递方法时,方法中创建对象的一个临时副本,一旦方法完成,副本被丢弃。
C#提供了ref参数修饰符用于按引用把值对象传给方法,还有out修饰符用于不经过初始化就传递一个ref变量。
public class Time { // public accessor methods public void DisplayCurrentTime() { System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", Month, Date, Year, Hour, Minute, Second); } public int GetHour() { return Hour; } public void SetTime(int hr, out int min, ref int sec) { // if the passed in time is >= 30 // increment the minute and set second to 0 // otherwise leave both alone if (sec >= 30) { Minute++; Second = 0; } Hour = hr; // set to value passed in // pass the minute and second back out min = Minute; sec = Second; } // constructor public Time(System.DateTime dt) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } // private member variables private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second; } public class Tester { static void Main() { System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime); t.DisplayCurrentTime(); int theHour = 3; int theMinute; int theSecond = 20; //out theMinute 便不用初始化 t.SetTime(theHour, out theMinute, ref theSecond); System.Console.WriteLine( "the Minute is now: {0} and {1} seconds", theMinute, theSecond); theSecond = 40; t.SetTime(theHour, out theMinute, ref theSecond); System.Console.WriteLine("the Minute is now: {0} and {1} seconds", theMinute, theSecond); } }
此例说明:theHour作为值参数传入,它的全部工作就是设置成员变量Hour,没有用此参数返回值。
Ref参数theSecond 用于在方法中设置值,使用引用类型时,必须在调用和目两处指定ref.
theHour,theSecond参数应该必须初始化,theMinute则没有必要,因为它是一个out参数,只是为了返回值。
属性结合了字段和方法的多个方面。 对于对象的用户,属性显示为字段,访问该属性需要相同的语法。 对于类的实现者,属性是一个或两个代码块,表示一个 get 访问器和/或一个 set 访问器。 当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行 set访问器的代码块。 不具有 set 访问器的属性被视为只读属性。 不具有 get 访问器的属性被视为只写属性。 同时具有这两个访问器的属性是读写属性。
与字段不同,属性不作为变量来分类。 因此,不能将属性作为 ref(C# 参考)参数或 out(C# 参考)参数传递。
属性具有多种用法:它们可在允许更改前验证数据;它们可透明地公开某个类上的数据,该类的数据实际上是从其他源(例如数据库)检索到的;当数据被更改时,它们可采取行动,例如引发事件或更改其他字段的值。
属性在类块中是按以下方式来声明的:指定字段的访问级别,接下来指定属性的类型和名称,然后跟上声明 get 访问器和/或 set 访问器的代码块。 例如:
public class Time { // public accessor methods public void DisplayCurrentTime() { System.Console.WriteLine( "Time\t: {0}/{1}/{2} {3}:{4}:{5}", month, date, year, hour, minute, second); } // constructors public Time(System.DateTime dt) { year = dt.Year; month = dt.Month; date = dt.Day; hour = dt.Hour; minute = dt.Minute; second = dt.Second; } // create a property public int Hour { get { return hour; } set { hour = value; } } // private member variables private int year; private int month; private int date; private int hour; private int minute; private int second; } public class Tester { static void Main() { System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime); t.DisplayCurrentTime(); int theHour = t.Hour; System.Console.WriteLine("\nRetrieved the hour: {0}\n", theHour); theHour++; t.Hour = theHour; System.Console.WriteLine("Updated the hour: {0}\n", theHour); } }
标签:style http color 使用 os 数据 ar 代码
原文地址:http://blog.csdn.net/gl1987807/article/details/38533069