parsa lotfy
پنج شنبه 17 دی 1394, 23:00 عصر
سلام...
خیلی کوتاه فقط بگم ک من ی مبتدیم و دارم از روو کتاب دیتل C# یاد میگیرم...
قسمتی از این کتاب چنین کدی رو نوشته ک من 3 روزه میخونم نمیفهمم !!!
این کد Class :
// Fig. 10.5: Time2.cs
// Time2 class declaration with overloaded constructors.
using System; // for class ArgumentOutOfRangeException
public class Time2
{
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
// constructor can be called with zero, one, two or three arguments
public Time2( int h = 0, int m = 0, int s = 0 )
{
SetTime( h, m, s ); // invoke SetTime to validate time
} // end Time2 three-argument constructor
// Time2 constructor: another Time2 object supplied as an argument
public Time2( Time2 time )
: this( time.Hour, time.Minute, time.Second ) { }
// set a new time value using universal time; ensure that
// the data remains consistent by setting invalid values to zero
public void SetTime( int h, int m, int s )
{
Hour = h; // set the Hour property
Minute = m; // set the Minute property
Second = s; // set the Second property
} // end method SetTime
// property that gets and sets the hour
public int Hour
{
get
{
return hour;
} // end get
set
{
if ( value >= 0 && value < 24 )
hour = value;
else
throw new ArgumentOutOfRangeException(
"Hour", value, "Hour must be 0-23" );
} // end set
} // end property Hour
// property that gets and sets the minute
public int Minute
{
get
{
return minute;
} // end get
set
{
if ( value >= 0 && value < 60 )
minute = value;
else
throw new ArgumentOutOfRangeException(
"Minute", value, "Minute must be 0-59" );
} // end set
} // end property Minute
// property that gets and sets the second
public int Second
{
get
{
return second;
} // end get
set
{
if ( value >= 0 && value < 60 )
second = value;
else
throw new ArgumentOutOfRangeException(
"Second", value, "Second must be 0-59" );
} // end set
} // end property Second
// convert to string in universal-time format (HH:MM:SS)
public string ToUniversalString()
{
return string.Format(
"{0:D2}:{1:D2}:{2:D2}", Hour, Minute, Second );
} // end method ToUniversalString
// convert to string in standard-time format (H:MM:SS AM or PM)
public override string ToString()
{
return string.Format( "{0}:{1:D2}:{2:D2} {3}",
( ( Hour == 0 || Hour == 12 ) ? 12 : Hour % 12 ),
Minute, Second, ( Hour < 12 ? "AM" : "PM" ) );
} // end method ToString
} // end class Time2
اینم کد Main :
// Fig. 10.6: Time2Test.cs
// Overloaded constructors used to initialize Time2 objects.
using System;
public class Time2Test
{
public static void Main( string[] args )
{
Time2 t1 = new Time2(); // 00:00:00
Time2 t2 = new Time2( 2 ); // 02:00:00
Time2 t3 = new Time2( 21, 34 ); // 21:34:00
Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42
Time2 t5 = new Time2( t4 ); // 12:25:42
Time2 t6; // initialized later in the program
Console.WriteLine( "Constructed with:\n" );
Console.WriteLine( "t1: all arguments defaulted" );
Console.WriteLine( " {0}", t1.ToUniversalString() ); // 00:00:00
Console.WriteLine( " {0}\n", t1.ToString() ); // 12:00:00 AM
Console.WriteLine(
"t2: hour specified; minute and second defaulted" );
Console.WriteLine( " {0}", t2.ToUniversalString() ); // 02:00:00
Console.WriteLine( " {0}\n", t2.ToString() ); // 2:00:00 AM
Console.WriteLine(
"t3: hour and minute specified; second defaulted" );
Console.WriteLine( " {0}", t3.ToUniversalString() ); // 21:34:00
Console.WriteLine( " {0}\n", t3.ToString() ); // 9:34:00 PM
Console.WriteLine( "t4: hour, minute and second specified" );
Console.WriteLine( " {0}", t4.ToUniversalString() ); // 12:25:42
Console.WriteLine( " {0}\n", t4.ToString() ); // 12:25:42 PM
Console.WriteLine( "t5: Time2 object t4 specified" );
Console.WriteLine( " {0}", t5.ToUniversalString() ); // 12:25:42
Console.WriteLine( " {0}", t5.ToString() ); // 12:25:42 PM
// attempt to initialize t6 with invalid values
try
{
t6 = new Time2( 27, 74, 99 ); // invalid values
} // end try
catch ( ArgumentOutOfRangeException ex )
{
Console.WriteLine( "\nException while initializing t6:" );
Console.WriteLine( ex.Message );
} // end catch
Console.ReadKey();
} // end Main
} // end class Time2Test
کد کلاس رو نیگا کنین... 2 تا Constructor داره ...
Constructor اولیو کاملا فهمیدم و با طرز کارش اشنا هستم...
اما از دومی سر در نمیارم متاسفانه ...
// Time2 constructor: another Time2 object supplied as an argument
public Time2( Time2 time )
: this( time.Hour, time.Minute, time.Second ) { }
میدونین یا ی ساختار دیگه ای نوشته شده ، مثلا سازنده ی اولی خیلی ساده ارگومان هارو داخل پرانتز نوشته و کاری ک باید انجام بشه رو تووی کروشه قرار داده...اما دومی چی ؟!
ی جور دیگه ای نوشته شده ... از this استفاده کرده ، از کولن (:) استفاده کرده ، ارگومان های داخل پرانتز چی هستن ؟ تووی کروشه ی اخرش چرا هیچی ننوشته ؟کاری ک سازنده باید انجام بده کجاش قرار داده شده ؟؟؟
عاقا کلا با سازنده دومی مشکل دارم هیچیشو نمیفهمم !!!!!!!:گریه::گریه::گریه:
لطفا توضیج بدین خیلی وقتمو گرفت این تیکه کد ...
با تشکر:قلب::قلب::قلب:
خیلی کوتاه فقط بگم ک من ی مبتدیم و دارم از روو کتاب دیتل C# یاد میگیرم...
قسمتی از این کتاب چنین کدی رو نوشته ک من 3 روزه میخونم نمیفهمم !!!
این کد Class :
// Fig. 10.5: Time2.cs
// Time2 class declaration with overloaded constructors.
using System; // for class ArgumentOutOfRangeException
public class Time2
{
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
// constructor can be called with zero, one, two or three arguments
public Time2( int h = 0, int m = 0, int s = 0 )
{
SetTime( h, m, s ); // invoke SetTime to validate time
} // end Time2 three-argument constructor
// Time2 constructor: another Time2 object supplied as an argument
public Time2( Time2 time )
: this( time.Hour, time.Minute, time.Second ) { }
// set a new time value using universal time; ensure that
// the data remains consistent by setting invalid values to zero
public void SetTime( int h, int m, int s )
{
Hour = h; // set the Hour property
Minute = m; // set the Minute property
Second = s; // set the Second property
} // end method SetTime
// property that gets and sets the hour
public int Hour
{
get
{
return hour;
} // end get
set
{
if ( value >= 0 && value < 24 )
hour = value;
else
throw new ArgumentOutOfRangeException(
"Hour", value, "Hour must be 0-23" );
} // end set
} // end property Hour
// property that gets and sets the minute
public int Minute
{
get
{
return minute;
} // end get
set
{
if ( value >= 0 && value < 60 )
minute = value;
else
throw new ArgumentOutOfRangeException(
"Minute", value, "Minute must be 0-59" );
} // end set
} // end property Minute
// property that gets and sets the second
public int Second
{
get
{
return second;
} // end get
set
{
if ( value >= 0 && value < 60 )
second = value;
else
throw new ArgumentOutOfRangeException(
"Second", value, "Second must be 0-59" );
} // end set
} // end property Second
// convert to string in universal-time format (HH:MM:SS)
public string ToUniversalString()
{
return string.Format(
"{0:D2}:{1:D2}:{2:D2}", Hour, Minute, Second );
} // end method ToUniversalString
// convert to string in standard-time format (H:MM:SS AM or PM)
public override string ToString()
{
return string.Format( "{0}:{1:D2}:{2:D2} {3}",
( ( Hour == 0 || Hour == 12 ) ? 12 : Hour % 12 ),
Minute, Second, ( Hour < 12 ? "AM" : "PM" ) );
} // end method ToString
} // end class Time2
اینم کد Main :
// Fig. 10.6: Time2Test.cs
// Overloaded constructors used to initialize Time2 objects.
using System;
public class Time2Test
{
public static void Main( string[] args )
{
Time2 t1 = new Time2(); // 00:00:00
Time2 t2 = new Time2( 2 ); // 02:00:00
Time2 t3 = new Time2( 21, 34 ); // 21:34:00
Time2 t4 = new Time2( 12, 25, 42 ); // 12:25:42
Time2 t5 = new Time2( t4 ); // 12:25:42
Time2 t6; // initialized later in the program
Console.WriteLine( "Constructed with:\n" );
Console.WriteLine( "t1: all arguments defaulted" );
Console.WriteLine( " {0}", t1.ToUniversalString() ); // 00:00:00
Console.WriteLine( " {0}\n", t1.ToString() ); // 12:00:00 AM
Console.WriteLine(
"t2: hour specified; minute and second defaulted" );
Console.WriteLine( " {0}", t2.ToUniversalString() ); // 02:00:00
Console.WriteLine( " {0}\n", t2.ToString() ); // 2:00:00 AM
Console.WriteLine(
"t3: hour and minute specified; second defaulted" );
Console.WriteLine( " {0}", t3.ToUniversalString() ); // 21:34:00
Console.WriteLine( " {0}\n", t3.ToString() ); // 9:34:00 PM
Console.WriteLine( "t4: hour, minute and second specified" );
Console.WriteLine( " {0}", t4.ToUniversalString() ); // 12:25:42
Console.WriteLine( " {0}\n", t4.ToString() ); // 12:25:42 PM
Console.WriteLine( "t5: Time2 object t4 specified" );
Console.WriteLine( " {0}", t5.ToUniversalString() ); // 12:25:42
Console.WriteLine( " {0}", t5.ToString() ); // 12:25:42 PM
// attempt to initialize t6 with invalid values
try
{
t6 = new Time2( 27, 74, 99 ); // invalid values
} // end try
catch ( ArgumentOutOfRangeException ex )
{
Console.WriteLine( "\nException while initializing t6:" );
Console.WriteLine( ex.Message );
} // end catch
Console.ReadKey();
} // end Main
} // end class Time2Test
کد کلاس رو نیگا کنین... 2 تا Constructor داره ...
Constructor اولیو کاملا فهمیدم و با طرز کارش اشنا هستم...
اما از دومی سر در نمیارم متاسفانه ...
// Time2 constructor: another Time2 object supplied as an argument
public Time2( Time2 time )
: this( time.Hour, time.Minute, time.Second ) { }
میدونین یا ی ساختار دیگه ای نوشته شده ، مثلا سازنده ی اولی خیلی ساده ارگومان هارو داخل پرانتز نوشته و کاری ک باید انجام بشه رو تووی کروشه قرار داده...اما دومی چی ؟!
ی جور دیگه ای نوشته شده ... از this استفاده کرده ، از کولن (:) استفاده کرده ، ارگومان های داخل پرانتز چی هستن ؟ تووی کروشه ی اخرش چرا هیچی ننوشته ؟کاری ک سازنده باید انجام بده کجاش قرار داده شده ؟؟؟
عاقا کلا با سازنده دومی مشکل دارم هیچیشو نمیفهمم !!!!!!!:گریه::گریه::گریه:
لطفا توضیج بدین خیلی وقتمو گرفت این تیکه کد ...
با تشکر:قلب::قلب::قلب: