আমি সি # তে বক্সিং পরিস্থিতিগুলির সমস্ত পরিস্থিতিতে সংগ্রহ করার চেষ্টা করছি:
মান প্রকারকে টাইপে রূপান্তর করা
System.Object
:struct S { } object box = new S();
মান প্রকারকে টাইপে রূপান্তর করা
System.ValueType
:struct S { } System.ValueType box = new S();
গণনা প্রকারের মানকে প্রকারে রূপান্তর করা
System.Enum
:enum E { A } System.Enum box = E.A;
ইন্টারফেস রেফারেন্সে মান ধরণের রূপান্তর করা:
interface I { } struct S : I { } I box = new S();
সি # স্ট্রিং সংমিশ্রণে মান প্রকারগুলি ব্যবহার করে:
char c = F(); string s1 = "char value will box" + c;
দ্রষ্টব্য:
char
ধরণের ধ্রুবকগুলি সংকলনের সময় সংমিশ্রিত হয়নোট: সংস্করণ 6.0 C # এর কম্পাইলার যেহেতু সেরা অনুকূল রূপ সংযুক্তকরণের জড়িত
bool
,char
,IntPtr
,UIntPtr
ধরনেরমান ধরণের উদাহরণ পদ্ধতি থেকে প্রতিনিধি তৈরি করা:
struct S { public void M() {} } Action box = new S().M;
মান প্রকারভেদে অ-ওভাররাইড ভার্চুয়াল পদ্ধতিগুলি কল করা:
enum E { A } E.A.GetHashCode();
is
প্রকাশের অধীনে সি # 7.0 ধ্রুবক নিদর্শনগুলি ব্যবহার :int x = …; if (x is 42) { … } // boxes both 'x' and '42'!
সি # টিপল ধরণের রূপান্তরগুলিতে বক্সিং করা:
(int, byte) _tuple; public (object, object) M() { return _tuple; // 2x boxing }
object
মান ধরণের ডিফল্ট মান সহ টাইপের ptionচ্ছিক পরামিতি :void M([Optional, DefaultParameterValue(42)] object o); M(); // boxing at call-site
এর জন্য নিয়ন্ত্রণহীন জেনেরিক ধরণের মান পরীক্ষা করা হচ্ছে
null
:bool M<T>(T t) => t != null; string M<T>(T t) => t?.ToString(); // ?. checks for null M(42);
দ্রষ্টব্য: এটি কিছু .NET রানটাইমগুলিতে জেআইটি কর্তৃক অনুকূলিত হতে পারে
সংকোচহীন বা মান পরীক্ষা টাইপ
struct
সঙ্গে জেনেরিক টাইপis
/as
অপারেটরদের:bool M<T>(T t) => t is int; int? M<T>(T t) => t as int?; IEquatable<T> M<T>(T t) => t as IEquatable<T>; M(42);
দ্রষ্টব্য: এটি কিছু .NET রানটাইমগুলিতে জেআইটি কর্তৃক অনুকূলিত হতে পারে
বক্সিং সম্পর্কে আরও কিছু পরিস্থিতি রয়েছে, সম্ভবত লুকানো আছে, যা আপনি জানেন?