VB.NET এর কি সি # out
ফাংশন প্যারামিটারের সাথে সরাসরি সমতুল্য রয়েছে , যেখানে কোনও ফাংশনে রূপান্তরিত ভেরিয়েবলটি আরম্ভ করার দরকার নেই?
উত্তর:
না, out
ভিবিতে কীওয়ার্ডের সমতুল্য নেই ।
যাইহোক, ভিবি কোনও পদ্ধতিতে সমস্ত স্থানীয় ভেরিয়েবল স্বয়ংক্রিয়ভাবে আরম্ভ করে, তাই আপনি ByRef
প্রথমে স্পষ্টভাবে ভেরিয়েবলটি আরম্ভ করার প্রয়োজন ছাড়াই ব্যবহার করতে পারেন ।
উদাহরণ:
Sub Main()
Dim y As Integer
Test(y)
End Sub
Sub Test(ByRef x As Integer)
x = 42
End Sub
(যদি আপনি ফ্রেমওয়ার্কে কোড পরীক্ষা করেন (উদাহরণস্বরূপ Double.TryParse ), আপনি <OutAttribute>
প্যারামিটারগুলিতে সংযোজন দেখতে পাচ্ছেন , তবে কেবলমাত্র COM ইন্টারপ বা প্ল্যাটফর্ম আহ্বানের জন্য কলটি মার্শাল করা হলে এটি কেবল তাত্পর্যপূর্ণ)
ByRef
। (এটি মান ধরণের পরামিতিগুলির সাথে ঘটে না))
Nothing
তাদেরকে নির্ধারণ করা সতর্কতা ইভেন্ট থেকে মুক্তি পাবে যদিও ফলাফলটি পরিবর্তন করে না।
Nothing
তাদেরকে দায়িত্ব দিয়ে আসছি । একটি বৃহত লিগ্যাসির ওয়েবসাইটে শত শত বার এটি করতে হওয়ায় এটি কেবল সময়সাপেক্ষ। তদন্ত করার জন্য আপনাকে ধন্যবাদ।
Out
গুণটি সি # কীওয়ার্ডের সমতুল্য নয়out
।
না, আর কোন সমতুল্য কনস্ট্রাক্ট একটি অ-ইনিশিয়ালাইজ পরিবর্তনশীল একটি সতর্কবাণী ছাড়াই একটি পদ্ধতি এ পাস করার অনুমতি দেয় হিসাবে আমার উল্লেখ করা হয়, কিন্তু, প্রশ্ন ও উত্তর একটি নির্দিষ্ট <Out()>
বৈশিষ্ট্য একটি উপর ByRef
, প্যারামিটার সংজ্ঞা যদিও ভিবি এটা উপেক্ষা করে, হয় সি # দ্বারা চিকিত্সা out
প্যারামিটার হিসাবে
তাই, আমি প্রাক ইনিশিয়ালাইজ করবে রেফারেন্স ভেরিয়েবল Nothing
এবং উল্লেখ<Out()> ByRef
অভিপ্রায়টি করতে করব (এটি যদি সি # ব্যবহারকারীরা কখনও আপনার পদ্ধতিতে অ্যাক্সেস করে তবে কাজ করবে)।
আপনি যদি মনে করেন আপনি কি জানেন যখন আপনি ডিফল্ট অ্যাক্সেস করতে মনস্থ করা Nothing
অন্যথায় নিয়োগমুক্র রেফারেন্স ভেরিয়েবলের মধ্যে আপনি "সতর্কতা কনফিগারেশন" সেট করতে পারেন "ব্যবহারের পরিবর্তনশীল" নির্ধারণ করার আগে থেকে কোনটি "" সম্ভবত প্রকল্প স্তর (প্রোজেক্ট বিশিষ্টতার> কম্পাইল, এবং আপনি এই সেটিংটি পরিবর্তন করার আগে কনফিগারেশনকে "সমস্ত কনফিগারেশনগুলিতে" সেট করতে চান), বা, ভিএস ২০১৫ (ভিবি। নেট ১৪) এ আপনি ব্যবহার করতে পারেন #Disable Warning BC42030
।
সি # সংস্করণ
void TestFunc(int x, ref int y, out int z) {
x++;
y++;
z = 5;
}
Vb.net সংস্করণ
Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
x += 1
y += 1
z = 5
End Sub
হালনাগাদ
মন্তব্যে বর্ণিত হিসাবে আপনার পরামিতিটি আরম্ভ করতে ভুলবেন না যা আউট স্লটে ব্যবহৃত হবে
আমার ভিবি.এনইটি-তে সমস্যা ছিল যে আমি একটি ফাংশনকে "বাই রেফ" বলেছিলাম যা একটি অ্যারে পিছিয়ে গেছে।
যদিও সংকলকটি এটি সতর্কবার্তা হিসাবে পতাকাঙ্কিত করেছে এটি ঠিক ছিল। ফিক্সটি অত্যন্ত সাধারণ এবং সম্ভবত ভাল প্রোগ্রামিং অনুশীলন।
আমি বদলে গেছি
Dim m_arr_values() as Integer
fnRetArray(m_arr_values)
প্রতি
' Even though 'Nothing' is the default value, setting it
' stops the compiler complaining.
Dim m_arr_values() as Integer = Nothing
fnRetArray(m_arr_values)
ভেরিয়েবলের নাম বর্ণনামূলক হলে কোডিং করার সময়ও এটি সহায়তা করে ...
Sub fnCreatePalette(ByRef arr_in_pal() As color, ByRef arr_out_pal() as uinteger)
...
End Sub
আপনি ভিবি.এনইটি-তে পাস বাই রেফারেন্স পদ্ধতি ব্যবহার করতে পারেন।
আপনার সি # তে আউট প্যারামিটার প্রক্রিয়া দরকার কারণ এটি আপনাকে কোনও পরিবর্তনশীল আরম্ভ না করে ব্যবহার করতে দেয় না।
VB.NET এর কোনও বিশেষ কীওয়ার্ডের প্রয়োজন নেই কারণ এটি স্বয়ংক্রিয়ভাবে এটি নিজেই করে।
কেবলমাত্র বাইআরফ ব্যবহার করুন।
ভিবিতে বৈশিষ্ট্য রয়েছে যা সি # আউট হিসাবে সমান হওয়া উচিত তবে আজও আপনি এটি ব্যবহার করা সত্বেও একটি সতর্কতা পান। গিথুবের vblang এটিকে ঠিক করার বিষয়ে বিশদ রয়েছে। https://github.com/dotnet/vblang/issues/67 ।
Object
, সুতরাং এটি কোনওByRef x As Integer
প্যারামিটারের জন্য ব্যবহার করা যাবে না )।