স্ট্রিং.এম্পটি এবং "" (খালি স্ট্রিং) এর মধ্যে পার্থক্য কী?


288

.NET কী মধ্যে পার্থক্য String.Emptyএবং "", এবং তারা বিনিময়যোগ্য, অথবা কিছু অন্তর্নিহিত রেফারেন্স বা সমতা প্রায় স্থানীয়করণ সমস্যা হয় String.Emptyনিশ্চিত করবে একটি সমস্যা হয় না?


2
আসল প্রশ্নটি বরং কী কারণে তা নয় । মাইক্রোসফ্ট কেন এলো এবং তার পরিবর্তে এটি ঘোষণার পিছনে যুক্তি কী ছিল । string.Emptyreadonlyconst
user1451111

উত্তর:


294

.NET সংস্করণ 2.0 এর পূর্বে, কোনও বস্তু তৈরি করে ""যখন string.Emptyকোনও অবজেক্ট রেফ তৈরি করে না , যা string.Emptyআরও দক্ষ করে তোলে ।

সংস্করণ 2.0 ও পরে .NET এর সব ঘটনার ""একই স্ট্রিং আক্ষরিক, যার মানে পড়ুন ""সমতূল্য .Empty, কিন্তু এখনও হিসাবে দ্রুত হিসাবে .Length == 0

.Length == 0দ্রুততম বিকল্প, তবে .Emptyসামান্য ক্লিনার কোড তৈরি করে।

দেখুন আরও তথ্যের জন্য .NET স্পেসিফিকেশন


91
"" স্ট্রিং ইন্টার্নিংয়ের কারণে কেবল "" একবারে কোনও অবজেক্ট তৈরি করা উচিত। মূলত পারফরম্যান্স ট্রেড অফ হল চিনাবাদাম - পঠনযোগ্যতা আরও গুরুত্বপূর্ণ।
জন স্কিটি

12
মজার বিষয় হচ্ছে যদিও প্রশ্নটি "" বা স্ট্রিংয়ের সাথে "" স্ট্রিংয়ের তুলনা সম্পর্কে কিছুই বলেছে না। খালি স্ট্রিংগুলি পরীক্ষা করার জন্য অনেকগুলি লোকেরা প্রশ্নটির
সেইভাবে

11
আমি সতর্কতা অবলম্বন করব। দৈর্ঘ্য == 0, কারণ আপনার স্ট্রিং ভেরিয়েবলটি নাল হলে এটি ব্যতিক্রম করতে পারে। আপনি যদি এটির বিরুদ্ধে পরীক্ষা করেন তবে এটি ব্যতীত সঠিকভাবে মিথ্যা ফিরিয়ে দেবে।
জেফ্রি হারমন

11
@ জেফ্রি হারমন: বা আপনি ব্যবহার করতে পারেন string.IsNullOrEmpty( stringVar )
ফ্লাইন 1179

1
যদি কেউ খালি স্ট্রিংয়ের পরীক্ষা করার জন্য খারাপ অভ্যাসগুলি প্রতিরোধ করতে চায়, আপনি কোড বিশ্লেষণে CA1820 সক্ষম করতে পারবেন। ডকস.মাইক্রোসফট.
শান

197

স্ট্রিং.এম্পটি এবং "" এর মধ্যে পার্থক্য কী, এবং সেগুলি কি বিনিময়যোগ্য

string.Emptyএকটি পঠনযোগ্য ক্ষেত্র যেখানে ""একটি সংকলন সময় ধ্রুবক। স্থানগুলি যেখানে তারা আলাদা আচরণ করে:

ডিফল্ট প্যারামিটার মান সি # ৪.০ বা তার বেশি

void SomeMethod(int ID, string value = string.Empty)
// Error: Default parameter value for 'value' must be a compile-time constant
{
    //... implementation
}

সুইচ বিবৃতিতে কেস এক্সপ্রেশন

string str = "";
switch(str)
{
    case string.Empty: // Error: A constant value is expected. 
        break;

    case "":
        break;

}

বৈশিষ্ট্য যুক্তি

[Example(String.Empty)]
// Error: An attribute argument must be a constant expression, typeof expression 
//        or array creation expression of an attribute parameter type

21
আকর্ষণীয়, আমি মনে করি না এই পুরানো প্রশ্নটি কোনও প্রাসঙ্গিক নতুন তথ্য পাবে। আমি ভুল ছিলাম
জনক

আমি মনে করি যে আপনার # 1 ডিফল্ট প্যারামিটার মান সি # 4.0 বা উচ্চতর মূলত আপনার উদাহরণ # 3 বৈশিষ্ট্যযুক্ত যুক্তির সদৃশ , কারণ আমার বিশ্বাস। সুতরাং মূলত, আপনি কেবল (রান-টাইম) "মান" রাখতে পারবেন না (এই ক্ষেত্রে স্টিলারদের জন্য একটি উদাহরণ হ্যান্ডেল ) সেখানে (সংকলন-সময়) মেটাডেটা।
গ্লেন স্লেডেন

@ গ্লেনস্লেডেন, আমি আপনার সাথে একমত নই। অ্যাট্রিবিউট ইনিশিয়ালাইজেশন একটি সাধারণ সূচনা থেকে আলাদা। এটি কারণ আপনি String.Emptyবেশিরভাগ ক্ষেত্রে একটি আর্গুমেন্ট হিসাবে পাস করতে পারেন । আপনি ঠিক বলেছেন যে সমস্ত উদাহরণগুলি এটি দেখায় you simply can't put a (run-time) "value" into (compile-time) metadataএবং এটি উদাহরণগুলি দেখানোর লক্ষ্য করে।
সাসুক উচিহ

42

পূর্ববর্তী উত্তরগুলি নেট। 1.1 এর জন্য সঠিক ছিল (তারা যে লিঙ্ক করেছে তার পোস্টের তারিখটি দেখুন: 2003)। .NET 2.0 এবং পরবর্তী হিসাবে, মূলত কোনও পার্থক্য নেই। জেআইটি একই উপায়ে যেভাবে হ'ল রেফারেন্স শেষ করবে।

C # এর স্পেসিফিকেশন অনুযায়ী, বিভাগ 2.4.4.5: http://msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx

প্রতিটি স্ট্রিং আক্ষরিক প্রয়োজনে একটি নতুন স্ট্রিং দৃষ্টান্ত তৈরি হয় না। যখন স্ট্রিং ইক্যুয়ালিটি অপারেটর (বিভাগ 7.9.7) অনুসারে সমতুল্য দুটি বা ততোধিক স্ট্রিং লিটারাল একই সমাবেশে উপস্থিত হয়, তখন এই স্ট্রিং লিটারালগুলি একই স্ট্রিং উদাহরণকে বোঝায়।

এমনকি কেউ ব্র্যাড আব্রামের পোস্টের মন্তব্যে এটির উল্লেখ করেছেন

সংক্ষেপে, "" বনাম স্ট্রিংয়ের কার্যকর ফলাফল mp শেষ পর্যন্ত জেআইটি তা বের করবে।

আমি খুঁজে পেয়েছি, ব্যক্তিগতভাবে, জেআইটি আমার চেয়ে বেশি স্মার্ট এবং তাই আমি মাইক্রো সংকলক অপ্টিমাইজেশনের মতো খুব চালাক না হওয়ার চেষ্টা করি। জেআইটি () লুপের জন্য উদ্ঘাটিত করবে, রিডানড্যান্ট কোড, ইনলাইন পদ্ধতিগুলি ইত্যাদির জন্য আরও ভাল এবং আমি বা সি # সংকলকটি আগে কখনই হাতের সামনে প্রত্যাশা করতে পারে তার চেয়ে বেশি উপযুক্ত এবং উপযুক্ত সময়ে সরিয়ে ফেলবে। জেআইটি তার কাজটি করুক :)


1
ছোট টাইপো? "জেআইটি কোনওভাবেই সহায়তাতে একই অবজেক্টটি উল্লেখ করবে।" আপনি কি "গাদা উপর" মানে?
দানা

সম্পর্কিত জনপ্রিয় প্রশ্ন stackoverflow.com/questions/263191/...
মাইকেল Freidgeim

36

String.Emptyএকটি হল কেবলমাত্র ক্ষেত্র যখন ""একটি হল const । এর অর্থ আপনি String.Emptyকোনও সুইচ বিবৃতিতে ব্যবহার করতে পারবেন না কারণ এটি কোনও ধ্রুবক নয়।


আবির্ভাব সঙ্গে defaultশব্দ আমরা ছাড়া পাঠযোগ্যতা প্রচার করতে পারেন, আপতিক পরিমার্জন প্রতিরোধ, এবং একটি কম্পাইল-টাইম ধ্রুবক আছে, যদিও সৎ হতে, আমি এখনও মনে String.Empty ডিফল্ট চেয়ে বেশি পাঠযোগ্য, কিন্তু ধীর টাইপ করতে
Enzoaeneas

18

আর একটি পার্থক্য হ'ল স্ট্রিং.এম্পটি বৃহত্তর সিআইএল কোড উত্পন্ন করে। "" এবং স্ট্রিংয়ের রেফারেন্সের কোডটি.এম্পটি একই দৈর্ঘ্যের হলেও, সংকলক স্ট্রিং.এম্পটি আর্গুমেন্টের জন্য স্ট্রিং কনটেনটেশন (এরিক লিপার্টের ব্লগ পোস্ট দেখুন ) অনুকূলিত করে না। নিম্নলিখিত সমতুল্য ফাংশন

string foo()
{
    return "foo" + "";
}
string bar()
{
    return "bar" + string.Empty;
}

এই আইএল উত্পাদন করুন

.method private hidebysig instance string foo() cil managed
{
    .maxstack 8
    L_0000: ldstr "foo"
    L_0005: ret 
}
.method private hidebysig instance string bar() cil managed
{
    .maxstack 8
    L_0000: ldstr "bar"
    L_0005: ldsfld string [mscorlib]System.String::Empty
    L_000a: call string [mscorlib]System.String::Concat(string, string)
    L_000f: ret 
}

বৈধ পয়েন্ট কিন্তু কে এই কাজ করবে? আমি কেন কোনও উদ্দেশ্যে একটি খালি স্ট্রিং সংযুক্ত করতে পারি?
রবার্ট এস

@RobertS। হতে পারে দ্বিতীয় স্ট্রিংটি একটি পৃথক ফাংশনে ছিল যা অন্তর্ভুক্ত। এটি বিরল, আমি আপনাকে দিচ্ছি।
ব্রুনো মার্টিনেজ

3
এটা তিন অপারেটর ব্যবহার করে যে বিরল নয়:"bar " + (ok ? "" : "error")
symbiont

13

উপরের উত্তরগুলি প্রযুক্তিগতভাবে সঠিক, তবে সর্বোত্তম কোড পাঠযোগ্যতার জন্য আপনি যা ব্যবহার করতে চাইতে পারেন তা হ'ল স্ট্রিং.আইএসনুলআরম্পিটি (গুলি)


3
সাম্যতার তুলনার ক্ষেত্রে আমি সম্পূর্ণরূপে একমত, কিন্তু প্রশ্নটি দুটি ধারণার পাশাপাশি পার্থক্য সম্পর্কেও ছিল
জনক

1
সাবধানতা অবলম্বন করুন যে "ব্যতিক্রমের সর্বনিম্ন সুযোগ" এর অর্থ প্রায়শই "চালিয়ে যাওয়ার তবে কিছু ভুল করার বেশিরভাগ সম্ভাবনা"। উদাহরণস্বরূপ, যদি আপনার কাছে কোনও কমান্ড লাইনের যুক্তি থাকে যা আপনি পার্স করছেন এবং কেউ আপনার অ্যাপটিকে কল করে --foo=$BARতবে আপনি সম্ভবত একটি এনভির ভার সেট করতে ভুলে গিয়ে পতাকাটি মোটেও পাস না করার মধ্যে পার্থক্যটি চিহ্নিত করতে চান want string.IsNullOrEmptyপ্রায়শই এমন একটি কোড-গন্ধ যা আপনার ইনপুটগুলি সঠিকভাবে যাচাই করেনি বা অদ্ভুত কাজগুলি করে। আপনি যখন সত্যই ব্যবহার nullকরতে চান বা সাধারণত / বিকল্প ধরণের মতো কোনও জিনিস খালি স্ট্রিংগুলি গ্রহণ করা উচিত নয় ।
অ্যালাস্টার মাউ

11

আমি একটি সাধারণ, তবুও সুস্পষ্ট কারণে নয় String.Emptyবরং ব্যবহার করার প্রবণতা রাখি "": ""এবং ""একইরকম নয়, প্রথমটিরটিতে এটিতে 16 টি শূন্য প্রস্থের অক্ষর রয়েছে। স্পষ্টতই কোনও সক্ষম বিকাশকারী তাদের কোডের মধ্যে শূন্য প্রস্থের অক্ষর রাখবে না, তবে তারা যদি সেখানে প্রবেশ করে তবে এটি রক্ষণাবেক্ষণের দুঃস্বপ্ন হতে পারে।

মন্তব্য:

  • আমি এই উদাহরণে ইউ + এফএফএফ ব্যবহার করেছি ।

  • এসও এই অক্ষরগুলি খেতে যাচ্ছে কিনা তা নিশ্চিত নন, তবে এটি অনেকগুলি শূন্য-প্রস্থের অক্ষরের সাথে নিজে চেষ্টা করুন

  • আমি কেবল এই ধন্যবাদটি https://codegolf.stackexchange.com/ এ এসেছি


এটি আরও উন্নয়নের দাবিদার। আমি প্ল্যাটফর্ম জুড়ে সিস্টেম একীকরণের মাধ্যমে এই সমস্যাটি দেখেছি।
এভিলডিআর

8

String.Emptyবরং ব্যবহার করুন ""

এটি মেমরির ব্যবহারের চেয়ে গতির পক্ষে বেশি তবে এটি একটি দরকারী টিপ। ""একটি আক্ষরিক তাই একটি আক্ষরিক হিসাবে কাজ করবে হল: প্রথম ব্যবহারের উপর এটি তৈরি করা হয় ও নিম্নলিখিত ব্যবহারের জন্য এর রেফারেন্স ফিরিয়ে দেওয়া হয়। কেবলমাত্র একটি উদাহরণ ""মেমরির মধ্যে সংরক্ষণ করা হবে আমরা তা যতবার ব্যবহার করি না! আমি এখানে কোনও মেমরির শাস্তি দেখতে পাচ্ছি না। সমস্যাটি হ'ল প্রতিবার ""ব্যবহৃত হয়, ""ইন্টার্ন পুলটিতে ইতিমধ্যে রয়েছে কিনা তা পরীক্ষা করার জন্য একটি তুলনা লুপ কার্যকর করা হয়। অন্যদিকে, .NET ফ্রেমওয়ার্ক মেমরি জোনে থাকা String.Empty কোনও ""সঞ্চিত উল্লেখ । ভিবি.এনইটি এবং সি # অ্যাপ্লিকেশনগুলির জন্য একই মেমরি ঠিকানার দিকে নির্দেশ করছে is সুতরাং আপনার যখন সেই রেফারেন্সটি অন্তর্ভুক্ত থাকবে তখন প্রতিবার কেন আপনার প্রয়োজন অনুসারে অনুসন্ধান করুনString.Empty""String.Empty?

তথ্যসূত্র: String.Emptyবনাম""


2
.NET

6

স্ট্রিং.এম্পটি একটি "" বস্তু তৈরি করে না। পার্থক্যটি, যেমন এখানে উল্লেখ করা হয়েছে , তবে তুচ্ছ।


4
আপনি যদি স্ট্রিংয়ের জন্য একটি স্ট্রিং পরীক্ষা করেন তবে এটি তুচ্ছ নয় mp কার্যকর বা ""। ইউজিন কাটজ নির্দেশিতভাবে স্ট্রিং.আইএসনুলআরএম্পটি ব্যবহার করা উচিত। অন্যথায় আপনি অপ্রত্যাশিত ফলাফল পাবেন।
সিগুর

6

"" এর সমস্ত উদাহরণ একই, অভ্যন্তরীণ স্ট্রিং আক্ষরিক (বা সেগুলি হওয়া উচিত)। সুতরাং আপনি প্রতিবার যখন ব্যবহার করবেন তখন সত্যই আপনি কোনও নতুন অবজেক্ট নিক্ষেপ করবেন না তবে কেবল একই, অভ্যন্তরীণ বস্তুর একটি রেফারেন্স তৈরি করবেন। এটি বলার পরে, আমি স্ট্রিংকে পছন্দ করি mp আমি মনে করি এটি কোডকে আরও পঠনযোগ্য করে তোলে।


5

এটা ঠিক কোন ব্যাপার না!

এর সম্পর্কে অতীতের কিছু আলোচনা:

http://www.codinghorror.com/blog/archives/000185.html

http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx

http://blogs.msdn.com/brada/archive/2003/04/27/50014.aspx


7
দয়া করে কিছু ইনলাইন ব্যাখ্যা অন্তর্ভুক্ত করুন।
lpapp

4
string mystring = "";
ldstr ""

ldstr মেটাডাটাতে সঞ্চিত স্ট্রিং আক্ষরিকের জন্য একটি নতুন অবজেক্টের রেফারেন্সটি ঠেলে দেয়।

string mystring = String.Empty;
ldsfld string [mscorlib]System.String::Empty

ldsfld স্থিতিশীল ক্ষেত্রের মানটি মূল্যায়ন স্ট্যাকের দিকে ঠেলে দেয়

আমি String.Emptyপরিবর্তে ব্যবহার করতে থাকি ""কারণ আইএমএইচও এটি পরিষ্কার এবং কম ভিবি-ইশ is


3

এরিক লিপার্ট লিখেছেন (১ 17 ই জুন, ২০১৩):
"সি # সংকলকটিতে আমি প্রথম যে অ্যালগরিদম নিয়ে কাজ করেছি সেটাই ছিল সেই অপটিমাইজার যা স্ট্রিং কনটেন্টেশনগুলি পরিচালনা করে Unfortunately দুর্ভাগ্যক্রমে আমি এই অপটিমাইজেশনগুলিকে রোজলিন কোডবেসে পোর্ট করার ব্যবস্থা করি নি আমি আশা করি কেউ করবে যে পেতে! "

জানুয়ারী 2019 এর মতো এখানে কিছু রোজলিন এক্স 64 ফলাফল রয়েছে this

বিশেষত দ্রষ্টব্য, তবে, এই উদাহরণগুলির মধ্যে কেবল একটিই কলিংয়ের সমাপ্তি ঘটে String.Concatএবং আমি অনুমান করছি যে এটি অস্পষ্ট নির্ভুলতার কারণে (অপ্টিমাইজেশান তদারকির বিপরীতে)। অন্যান্য পার্থক্য ব্যাখ্যা করা কঠিন বলে মনে হচ্ছে।


ডিফল্ট (স্ট্রিং) + {ডিফল্ট (স্ট্রিং), "", স্ট্রিং E

static String s00() => default(String) + default(String);
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    add  rsp,28h
    ret

static String s01() => default(String) + "";
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    add  rsp,28h
    ret

static String s02() => default(String) + String.Empty;
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    mov  rdx,rax
    test rdx,rdx
    jne  _L
    mov  rdx,rax
_L: mov  rax,rdx
    add  rsp,28h
    ret

"" + {ডিফল্ট (স্ট্রিং), "", স্ট্রিং.এম্পটি}

static String s03() => "" + default(String);
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    add  rsp,28h
    ret

static String s04() => "" + "";
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    add  rsp,28h
    ret

static String s05() => "" + String.Empty;
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    mov  rdx,rax
    test rdx,rdx
    jne  _L
    mov  rdx,rax
_L: mov  rax,rdx
    add  rsp,28h
    ret

স্ট্রিং.এম্পটি + {ডিফল্ট (স্ট্রিং), "", স্ট্রিং.এম্পটি}

static String s06() => String.Empty + default(String);
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    mov  rdx,rax
    test rdx,rdx
    jne  _L
    mov  rdx,rax
_L: mov  rax,rdx
    add  rsp,28h
    ret

static String s07() => String.Empty + "";
    mov  rax,[String::Empty]
    mov  rax,qword ptr [rax]
    mov  rdx,rax
    test rdx,rdx
    jne  _L
    mov  rdx,rax
_L: mov  rax,rdx
    add  rsp,28h
    ret

static String s08() => String.Empty + String.Empty;
    mov  rcx,[String::Empty]
    mov  rcx,qword ptr [rcx]
    mov  qword ptr [rsp+20h],rcx
    mov  rcx,qword ptr [rsp+20h]
    mov  rdx,qword ptr [rsp+20h]
    call F330CF60                 ; <-- String.Concat
    nop
    add  rsp,28h
    ret


পরীক্ষার বিবরণ

Microsoft (R) Visual C# Compiler version 2.10.0.0 (b9fb1610)
AMD64 Release
[MethodImpl(MethodImplOptions.NoInlining)]
'SuppressJitOptimization' = false

2

একটি সত্তা ফ্রেমওয়ার্ক দর্শন দৃষ্টিকোণ থেকে এটি আসছে: EF সংস্করণ 6.1.3 স্ট্রিংয়ের সাথে উপস্থিত হয় E এফটি এবং বৈধতা দেওয়ার সময় আলাদা "" আচরণ করে।

স্ট্রিং.এম্পটিকে বৈধতার উদ্দেশ্যে নাল মান হিসাবে বিবেচনা করা হয় এবং এটি প্রয়োজনীয় (বিশিষ্ট) ক্ষেত্রে ব্যবহার করা থাকলে একটি বৈধতা ত্রুটি নিক্ষেপ করবে; যেখানে "" বৈধতা পাস করবে এবং ত্রুটি ছুঁড়ে না ফেলে।

এই সমস্যাটি EF 7+ এ সমাধান হতে পারে। তথ্যসূত্র: - https://github.com/aspnet/EntityFramework/issues/2610 )।

সম্পাদনা করুন: [প্রয়োজনীয় (AllowEmptyStrings = সত্য)] স্ট্রিংয়ের অনুমতি দিয়ে এই সমস্যাটি সমাধান করবে E


2

স্ট্রিং.এম্পটি কোনও সংকলন-সময় ধ্রুবক নয় তাই আপনি এটিকে ফাংশন সংজ্ঞাতে ডিফল্ট মান হিসাবে ব্যবহার করতে পারবেন না।

public void test(int i=0,string s="")
    {
      // Function Body
    }

1
শুধু এই উত্তর থেকে সারাংশ: public void test(int i=0, string s=string.Empty) {}কম্পাইল এবং বলে " 's' এর জন্য ডিফল্ট প্যারামিটার মান করা হবে না একটি কম্পাইল-টাইম ধ্রুবক হতে হবে ওপি এর উত্তর কাজ
bugybunny

1

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

স্ট্রিংগুলি স্পট করুন (স্ট্যাক ওভারফ্লো কালারাইজেশন হুবহু সহায়তা করছে না, তবে ভিএসে এটি আরও সুস্পষ্ট):

var i = 30;
var f = Math.Pi;
var s = "";
var d = 22.2m;
var t = "I am some text";
var e = string.Empty;

2
আপনি একটি ভাল পয়েন্ট করেছেন, কিন্তু বিকাশকারীটির সত্যই কি "" অর্থ ছিল? সম্ভবত তারা কিছু এখনও অজানা মান হিসাবে রাখা এবং ফিরে যেতে ভুলে গেছেন? স্ট্রিং.এম্পটির আপনাকে আত্মবিশ্বাস দেওয়ার সুবিধা রয়েছে যে মূল লেখক আসলে স্ট্রিং.ইম্পটি বোঝায় meant এটি আমার একটি ছোটখাটো বিষয় know
চিহ্ন_

এছাড়াও, কোনও দূষিত (বা অযত্নহীন) বিকাশকারী যথাযথ পালানোর সিকোয়েন্সটি ব্যবহার না করে উদ্ধৃতিগুলির মধ্যে শূন্য-প্রস্থের অক্ষর রাখতে পারে \u00ad
প্লেলে

-8

এখানকার প্রত্যেকে কিছু ভাল তাত্ত্বিক স্পষ্টতা দিয়েছিল। আমারও একই সন্দেহ ছিল। সুতরাং আমি এটিতে একটি বেসিক কোডিং চেষ্টা করেছি। এবং আমি একটি পার্থক্য খুঁজে পেয়েছি। এখানে পার্থক্য।

string str=null;
Console.WriteLine(str.Length);  // Exception(NullRefernceException) for pointing to null reference. 


string str = string.Empty;
Console.WriteLine(str.Length);  // 0

সুতরাং মনে হচ্ছে "নুল" এর অর্থ একেবারে অকার্যকর & "স্ট্রিং.এম্পটি" এর অর্থ এর মধ্যে কিছুটা মান রয়েছে তবে এটি খালি।


7
নোট করুন যে প্রশ্নটি ""বনাম সম্পর্কে string.Empty। কেবল স্ট্রিং খালি কিনা তা বলার চেষ্টা করার nullসময় উল্লেখ করা হয়েছিল।
প্লেকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.