الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما البديل عن الموديول

مغلق
بدأه NiceyFriend في 19 أبريل 2006 · 7 رد · 848 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تحية طيبة

كنت محتاج اني احول كود Module مكتوب بVB الى C#.NET 2005 وكانت الفكرة بخصوص استخدام متغيرات على مستوى البرنامج ككل.

إطلعت على المواضيع السابقة التي تناولت الموضوع وكانت تنصح باستخدام Public Static لكل متغير داخل الكلاس ، وعند استخدامه من اي مكان يتم عن طريق ClassName.VarName

فهل هناك طريقة للوصول المباشر كما تعودنا في الموديول المستخدم في VB

ارجوا ان يكون السؤال واضح

اللينكات القديمة :

/index.ph...69944&hl=Module

/index.ph...74408&hl=Module

ولكم مني الشكر :rolleyes:

#2
اقتباس
فهل هناك طريقة للوصول المباشر كما تعودنا في الموديول المستخدم في VB

أعتقد ان أبسط طريقة للوصول المباشر للحتوى الموديل عن طريق ClassName.WahtEverVarOrMethod

وبالتالى أولا لازم يكون المتغير static

لو عندى كود بالC#:

public class s
{
 public static x;
}


public static void Main()
{

 s.x = 9;
}

سيكون بالVB.net

Public Class s
 Public static x
End Class


Public Shared  Sub Main()
 Dim ss As s =  New s() 
 s.x = 9
End Sub

Convert c# to VB.net

تم تعديل هذه المشاركة بواسطة eng_3llam في 19 أبريل 2006 في 17:56

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#3

نصيحة عامة،، لا تستخدم أسلوب VB في البرمجة مع VB.NET..

ونصيحة خاصة بالموضوع،، عامة لا تستخدم المتغيرات العامة التي أردت استخدامها! استخدم متغيرات خاصة تصل إليها بطرق منطقية أفضل في فئات متخصصة!

#4

اخي eng_3llam شكرا على الرد لكن انا محتاج اكتبه بال C# .Net 2005 وليس ال VB ،

فمثلا اريد تعريف Public int X وبذلك استطيع ان استخدم المتغير X في اي جزئية في البرنامج ككل .

اخي حسام اشكرك ايضا على ردك ولكن حبذا لو تشرح لي ماذا قصدت ب (متغيرات خاصة تصل إليها بطرق منطقية أفضل في فئات متخصصة!

)

ولكم مني الشكر

#5

ماهو المتغير بالضبط الذي تريد تعميمه؟

ما عمل البرنامج؟

#6

أخي ابو مازن ،

لنفرض مثلاً أن هنالك متغير اسمه bLanguage وهو متغير من نوع Public Bool

في الفيجيوال بيسك كنت استطيع وضعه في موديول ، وبذلك من اي فورم استطيع ان امرر قيمة له دون ان اعرفه مرة اخرى .

كيف اطبق مثل هذه الحالة في الفيجيوال سي شارب ؟؟؟

#7
اقتباس
متغيرات خاصة تصل إليها بطرق منطقية أفضل في فئات متخصصة

الاخ حسام يقصد أن يكون المتغير private وتعرف لة الAccessors(get and set)

اقتباس
مبدئياً إذا وجدت نفسك تحتاج إلى متغير عام (متغير و ليس الثوابت) على مستوى المشروع فاعلم أن لديك مشكلة في الDesign

للتوضيح أكثر ممكن يكتب المتغير هكذا وبكدة المتغير يكون Encapsulated

// Static properties must operate on static data!
public class Employee
{
private static bool m_bLanguage;
public static bool BLanguage 
{
get { return m_bLanguage; }
set { m_bLanguage = value;}
}
...
}

تم تعديل هذه المشاركة بواسطة eng_3llam في 20 أبريل 2006 في 19:14

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#8

على فرض أنك فهمت قصد المهندس علام.

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

/*
 * Created by SharpDevelop.
 * User: Free User
 * Date: 20/04/2006
 * Time: 09:16 م
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;

namespace myproject
{
	class MainClass
	{
  public static void Main(string[] args)
  {
 	 Console.WriteLine("Hello World!");
 	 Environment e=new Environment("my user prefferences");
 	 Console.WriteLine(e.language);
 	 e.language="Arabic";
 	 Console.WriteLine(e.language);
 	 
 	 //Letus make this Environment the default environment
 	 Environment.setDefualtEnvironment(e);
 	 
 	 //now you can access this environment from anywhere
 	 Console.WriteLine(Environment.getDefaultEnvironment().language);
 	 //you program can then store many user preferred properties
 	 Environment anotherUser=new Environment("Majid");
 	 anotherUser.putProperty("color", "red");
 	 
 	 //consider saving the envoronment in a file, 
 	 //so that you can load the person preferences.
 	 
 	 
  }
	}
	public class Environment{
  String name;
  Dictionary <String, Object>properties;
  private static Environment defaultValue;//=new Environment("base");
  public static String LANGUAGE="language";
  public Environment(String userName){
 	 this.name=userName;
 	 properties=new Dictionary<String, Object>();
 	 language="English";
  }
  public String getName(){
 	 return name;
  }
  public String language{
 	 set {
    properties[LANGUAGE]=value;
 	 }
 	 get{
    return (String)properties[LANGUAGE];
 	 }
  }
  public void putProperty(String name, Object v){
    properties.Add(name, v);
  }
  public Object getProperty(String name){
 	 return properties[name];
  }
  public static void setDefualtEnvironment(Environment e){
 	 if(e!=null)
    defaultValue=e;
  }
  public static Environment getDefaultEnvironment(){
 	 return defaultValue;
  }
	}
}

نستطيع أن نذهب إلى أبعد من هذا التصميم،، لكن أرجو قبل ذلك أن تحاول فهم هذا الأسلوب.

أرجو أن يكون الشرح واضحا،، لاحظ أنك تستطيع أن تدخل على أي متغير عام مثل اللغة عن طريق:

Environment.getDefaultEnvironemt().language

أو

Environemt.getDefaultEnvironment().get("language");

بالتوفيق!

هذا الموضوع مغلق.

مواضيع مشابهة