সি # নুলযোগ্য স্ট্রিং ত্রুটি


136
private string? typeOfContract
{
  get { return (string?)ViewState["typeOfContract"]; }
  set { ViewState["typeOfContract"] = value; }
}

পরে কোডটিতে আমি এটি ব্যবহার করি:

typeOfContract = Request.QueryString["type"];

typeOfContractরেখার বিবরণীতে আমি নিম্নলিখিত ত্রুটিটি পেয়ে যাচ্ছি :

জেনেরিক টাইপ বা পদ্ধতিতে সিস্টেম 'প্যারামিটার' টি হিসাবে এটি ব্যবহার করতে 'স্ট্রিং' টাইপটি অবশ্যই একটি নন-অযোগ্য মান ধরণের হতে হবে ul

কোন ধারনা? মূলত, আমি নিশ্চিত করতে চাই যে কোনও ক্রিয়া সম্পাদনের আগে এটি "type"বিদ্যমান existsQueryString

উত্তর:


304

সিস্টেম.স্ট্রিং একটি রেফারেন্স টাইপ এবং ইতিমধ্যে "nullaable"।

অবিচ্ছিন্ন <টি> এবং? প্রত্যয়টি মান ধরণের জন্য যেমন ইন 32, ডাবল, ডেটটাইম ইত্যাদি for


13
একটি বিষয় লক্ষণীয়: নুলযোগ্য <টি> নিজেই একটি মান টাইপ, তবে "স্ট্রাক্ট" জেনেরিক ধরণের সীমাবদ্ধতায় কেবল অ-ননযোগ্য মান প্রকারের অন্তর্ভুক্ত থাকে - সুতরাং আপনি <<<<<<<<<< টি করতে পারবেন না।
জন স্কিটি

সি # 8.0 এ রেফারেন্স প্রকারগুলি অযোগ্য হিসাবে চিহ্নিত হতে পারে। কেউ string?বিশ্বকে বলতে টাইপ করতে পারে এই স্ট্রিংটি শূন্য হতে পারে। সূত্র: youtube.com/watch?v=VdC0aoa7ung
nkalfov

39

আপনি এটিকে জটিল করে তুলছেন। stringইতিমধ্যে nlalable হয়। আপনার এটিকে আরও আক্রান্ত করার দরকার নেই । ?সম্পত্তির ধরণটি বের করুন ।


19

স্ট্রিং নুল্যাবলের প্যারামিটার হতে পারে না কারণ স্ট্রিং কোনও মান ধরণের নয়। স্ট্রিং একটি রেফারেন্স টাইপ।

string s = null; 

একটি খুব বৈধ বিবৃতি এবং এটি naclable করার প্রয়োজন নেই।

private string typeOfContract
    {
      get { return ViewState["typeOfContract"] as string; }
      set { ViewState["typeOfContract"] = value; }
    }

কারণ কাজ করা উচিত যেমন শব্দ।


13

স্ট্রিং একটি রেফারেন্স টাইপ, সুতরাং আপনার Nullable<T>এখানে ব্যবহার করার প্রয়োজন নেই (এবং না) । কেবল টাইপ অফ কনট্রাক্টকে স্ট্রিং হিসাবে ঘোষণা করুন এবং কোয়েরি স্ট্রিং থেকে এটি পাওয়ার পরে কেবল নালটি পরীক্ষা করুন। অথবা যদি আপনি খালি স্ট্রিংয়ের মানগুলি নাল হিসাবে একইভাবে পরিচালনা করতে চান তবে স্ট্রিং.আইএসনুলআরম্পটি ব্যবহার করুন।


4

অবিচ্ছিন্নতার জন্য, স্ট্রিং ব্যতীত ?সমস্ত সি # আদিমগুলির সাথে ব্যবহার করুন ।

নিচের টি পাতা একটি তালিকা দেয় C # এর প্রিমিটিভের : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx


1
লিঙ্কটি হ'ল ভাঙা ধন্যবাদ
মিনা গ্যাব্রিয়েল

ধন্যবাদ মিনা, আমি একটি আলাদা লিঙ্ক পেয়েছি এবং রেফারেন্সটি আপডেট করেছি।
জেমস ওরাভেক

1
শুধু আদিম নয়, সমস্ত অ-মূল্যহীন মান ধরণের (যা বিশেষভাবে নেট। দ্বারা পরিচালিত হয় না) কাজ করে।
IllidanS4 4'14

0

দয়া করে মনে রাখবেন যে সি # এর আসন্ন সংস্করণে 8 টি, উত্তরগুলি সত্য নয়।

All the reference types are non-nullable by default এবং আপনি আসলে নিম্নলিখিতটি করতে পারেন:

public string? MyNullableString; 
this.MyNullableString = null; //Valid

যাহোক,

public string MyNonNullableString; 
this.MyNonNullableString = null; //Not Valid and you'll receive compiler warning. 

এখানে গুরুত্বপূর্ণ বিষয়টি হল আপনার কোডের অভিপ্রায় দেখানো। যদি "অভিপ্রায়" হ'ল রেফারেন্স প্রকারটি নালার হতে পারে তবে এটি চিহ্নিত করুন সুতরাং অন্যথায় শুল্কহীনকে নাল মান নির্ধারণের ফলে সংকলক সতর্কতা হতে পারে।

অধিক তথ্য

মডারেটরের কাছে যিনি সমস্ত উত্তর মুছে ফেলছেন, এটি করবেন না। আমি দৃ strongly়ভাবে বিশ্বাস করি যে এই উত্তরের সাথে মান যুক্ত হয় এবং মুছে ফেলা কেবল সেই সময়টি সঠিক তা জানতে কাউকে বাধা দেয়। যেহেতু আপনি সমস্ত উত্তর মুছে ফেলেছেন, তাই আমি এখানে উত্তর পুনরায় পোস্ট করছি। "ডুপ্লিকেট" সম্পর্কিত যে লিঙ্কটি প্রেরণ করা হয়েছিল তা কেবল কিছু লোকের খোলার এবং এটি আমি অফিসিয়াল সুপারিশ বলে মনে করি না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.