ইন্টারপোলেশন দিয়ে আপনি কীভাবে ভারব্যাটিম স্ট্রিং ব্যবহার করবেন?


133

সি # 6 এ একটি নতুন বৈশিষ্ট্য রয়েছে: ইন্টারপোল্টেড স্ট্রিং।

এগুলি আপনাকে সূচকের উপর নির্ভর না করে সরাসরি কোডে এক্সপ্রেশন দেয়:

string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());

হয়ে:

string s = $"Adding \"{x}\" and {this.Y()} to foobar.";

তবে ভারব্যাটিম স্ট্রিংগুলি (মূলত এসকিউএল স্টেটমেন্ট) ব্যবহার করে আমাদের একাধিক লাইন জুড়ে প্রচুর স্ট্রিং রয়েছে:

string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());

এগুলিকে নিয়মিত স্ট্রিংগুলিতে ফিরিয়ে দেওয়া অগোছালো বলে মনে হচ্ছে:

string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();

আমি ভারব্যাটিম এবং ইন্টারপোল্টেড স্ট্রিং একসাথে কীভাবে ব্যবহার করব?


3
যদি এটি সত্যিই এসকিউএল স্ট্রিংগুলি সম্পর্কে থাকে তবে এর পরিবর্তে প্যারামেট্রাইজড কোয়েরি ব্যবহার না করার কোনও কারণ আছে কি?
— সোভিক

1
"ভারব্যাটিম স্ট্রিংগুলি (মূলত এসকিউএল স্টেটমেন্ট) ব্যবহার করে আমাদের একাধিক লাইন জুড়ে প্রচুর স্ট্রিং রয়েছে" আপনার কাছে অনেকগুলি এসকিউএল স্ট্রিং রয়েছে যা এসকিউএল ইঞ্জেকশন আক্রমণ সক্ষম করে sounds
— Cetin Basoz

1
@ চালক আমরা, ব্যবহারকারী ইনপুট প্রতিটি প্যারামিটারাইজড। আমরা এখনও গতিশীল এসকিউএল যদিও ভারীভাবে ব্যবহার করি, কারণ আমরা কোডে আমাদের সত্তাগুলির জন্য গতিশীল এসকিউএল তৈরি করি।
— কিথ

1
@ চ্যাটিনবাসোজ আমরা করি না - সমস্ত ব্যবহারকারীর ইনপুট প্যারামিটারাইজড। আপনার গতিশীল এসকিউএল রয়েছে এমন প্রচুর পরিস্থিতি রয়েছে - যেমন লিনকুই বা অন্য কোনও অবজেক্ট ম্যাপিং ফ্রেমওয়ার্ক।
— কিথ

উত্তর:


194

আপনি একই স্ট্রিংয়ে উভয় $এবং @উপসর্গ প্রয়োগ করতে পারেন :

string s = $@"Result...
Adding ""{x}"" and {this.Y()} to foobar:
{x.GetLog()}";

সি # in- তে প্রবর্তিত হওয়ার পরে , ইন্টারপোলটেড ভারব্যাটিম স্ট্রিংগুলি টোকেন দিয়ে শুরু করতে হয়েছিল $@, তবে সি # 8 দিয়ে শুরু করে, আপনি হয় $@বা ব্যবহার করতে পারেন@$ ।


57
বিপরীতে ( @$"...") কাজ করে না, যা আমাকে এখানে নিয়ে আসে।
— সিনেটর

12
@ সিনাটার হ্যাঁ, এটি $@"..."সেই ক্রমে থাকতে হবে।
— কিথ

36
আপনি যখন এটির বিষয়ে চিন্তা করেন $@তখন এই বাস্তবতা কার্যকর @$হয় না। আমি যখন এই সম্পর্কে বিভ্রান্ত হয়ে পড়ি, যখন আমি এই বাক্যবিন্যাসটি ব্যবহার শুরু করি তখন ঘন ঘন ঘটেছিল, আমি সর্বদা নিজেকে বলেছিলাম: "এই ভার্বাটিয়াম স্ট্রিংকে বিভক্ত করুন" কারণ বিপরীতটি অর্থবোধ করে না।
— হেকি

1
@ রায়লুও সত্যিই নয়, তবে কত তাড়াতাড়ি বিভিন্ন given
— কিথ

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