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


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.