سؤال

وأنا مجرد لافتة ...

هل من الممكن الافراج عن متغير في ج #؟

ما أعنيه هو، يمكنك أن تفعل شيئا من هذا القبيل:

...
string x = "billy bob";

//release variable x somehow

string x = "some other string";

//release variable x somehow

int x = 329;
...

... وذلك أساسا كنت إعلان عدة مرات متغير في نفس النطاق.

إذا لم يكن ذلك ممكنا في ج #، فما هي اللغات هل من الممكن في؟

هل كانت مفيدة؟

المحلول

ويمكنك أن تفعل ذلك مع نطاقات (المدى فضفاضة، رسميا وأعتقد أن هذا سيكون الفضاء إعلان)، على سبيل المثال ما يلي هو قانوني تماما C # ضمن هيئة الأسلوب:

{
    string x = "billy bob";    
}
{
    string x = "some other string";
}
{
    int x = 329;
}

وأنا لا أنصح كتابة التعليمات البرمجية مثل هذا على الرغم من أنه يجعل من الآن من السهل جدا للحصول على المتغيرات الخلط في الأسلوب. من الأفضل استخدام مختلفة، وأسماء أكثر وصفي، أو فصل كل حجب في طرقها الخاصة.

نصائح أخرى

لا، هذا غير ممكن في C # ضمن نفس النطاق - الذي أنا ممتن جدا. هذا يبدو وكأنه وصفة لكارثة سهولة القراءة. كما أظهرت جريج، يمكنك إدخال نطاقات الخاصة بك في غضون طريقة فقط لهذا الغرض على الرغم من.

وأنا لا أعرف اللغات التي تسمح لك ان تفعل هذا - واللغات المكتوبة ضعيفة في كثير من الأحيان تمكنك من تعيين قيم التعسفية بالطبع، ولكن أنا لا أعرف من اللغة التي لديها تعريفات المتغير صريحة <م> بمعلومات نوع ويسمح أيضا redeclaration في نفس النطاق.

وقد ترغب في قراءة اريك ليبرت وأحدث بلوق وظيفة، وهو <وأ href = "http://blogs.msdn.com/ericlippert/archive/2009/08/03/what-s-the-difference- جزء من يومين نطاق-مقابل-إعلان-الفضاء-مقابل-lifetime.aspx "يختلط =" noreferrer "> كل شيء عن نطاق . (إذا كنت لا تقرأ بالفعل بلوق اريك، قد ترغب في مسح خارج بضعة أيام في التقويم الخاص بك وقراءة جميع المشاركات الظهر ... أو على الأقل تلك التي منذ انضمامه إلى فريق C #. إعداد قد عقلك في مهب مرارا وتكرارا.)

ويمكنك إعادة استخدام سلسلة:

string x = "billy bob";
x = "some other string";

وماذا تريد أن تفعل هذا؟

وربما يمكنك القيام بذلك:

object x = "billy bob"
x = "some other string";
x = 329;

وبعد ذلك يلقي كما تريد؟

ويمكنك إعادة تعيين المتغيرات، وبطبيعة الحال:

string s = "billy bob";
s = "something else";

وأنت لا يمكن redeclare المتغيرات في نفس النطاق:

// This is illegal:
string s = "billy bob";
string s = "foo"

ومنذ كائن هو السبب الجذري للنظام نوع في .NET، يمكنك أن تفعل شيئا من هذا القبيل:

object o = "billy bob";
o = "foo";
o = 5;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top