Nullable<T>.GetValueOrDefault Method
float? yourSingle = -1.0f; Console.WriteLine( yourSingle.GetValueOrDefault() ); yourSingle = null; Console.WriteLine( yourSingle.GetValueOrDefault() ); // assign different default value Console.WriteLine( yourSingle.GetValueOrDefault( -2.4f ) ); // returns the same result as the above statement Console.WriteLine( yourSingle ?? -2.4f );
در صورتیکه مقداری را به عنوان پیش فرض، به پارامتر این متد ارسال نکنید، مقدار پیش فرض آن از نوع استفاده شده بدست میآید.
شما میتوانید برای دیکشنری نیز یک متد Get امن ایجاد کنید (در صورت عدم وجود کلید، بجای پرتاب استثناء، مقدار پیش فرض بازگشت داده شود).
public static class DictionaryExtensions { public static TValue GetValueOrDefault< TKey, TValue >( this Dictionary< TKey, TValue > dic, TKey key ) { TValue result; return dic.TryGetValue( key, out result ) ? result : default(TValue); } }
و روش استفاده
var names = new Dictionary< int, string > { { 0, "Vahid" } }; Console.WriteLine( names.GetValueOrDefault( 1 ) );
ZipFile in .NET
var startPath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.Desktop ), "Start" ); var resultPath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.Desktop ), "Result" ); var extractPath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.Desktop ), "Extract" ); Directory.CreateDirectory( startPath ); Directory.CreateDirectory( resultPath ); Directory.CreateDirectory( extractPath ); var zipPath = Path.Combine( resultPath, Guid.NewGuid() + ".zip" ); ZipFile.CreateFromDirectory( startPath, zipPath ); ZipFile.ExtractToDirectory( zipPath, extractPath );
C# Preprocessor Directives
#if DEBUG #warning DEBUG is defined #endif
#if DEBUG #error DEBUG is defined #endif
در مثال زیر، در صورتیکه در خط اول break point قرار دهید و با کلید F10 برنامه را اجرا کنید، مشاهده میکنید که دیباگر، خطی را که بعد از دستور line hidden# نوشته شده است، در نظر نمیگیرد (برای دیباگ) اما اجرا میشود و دیباگر بر روی دستور بعد از line default# قرار میگیرد.
Console.WriteLine("Normal line #1."); // Set break point here. #line hidden Console.WriteLine("Hidden line."); #line default Console.WriteLine("Normal line #2.");
Stackalloc
static unsafe void Fibonacci() { const int arraySize = 20; int* fib = stackalloc int[arraySize]; var p = fib; *p++ = *p++ = 1; for ( var i = 2; i < arraySize; ++i, ++p ) { *p = p[-1] + p[-2]; } for ( var i = 0; i < arraySize; ++i ) { System.Console.WriteLine( fib[i] ); } }